Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageView背景在方向更改后不显示图像_Java_Android_Imageview_Screen Orientation - Fatal编程技术网

Java ImageView背景在方向更改后不显示图像

Java ImageView背景在方向更改后不显示图像,java,android,imageview,screen-orientation,Java,Android,Imageview,Screen Orientation,编辑:如果一个主体在调用OnConfiguration Changed时需要一个答案,我只需初始化我在onCreate中所做的所有变量 您好,我有一个应用程序,它显示一个进度对话框,然后在从相机拍摄的imageview中显示一幅图像。问题是当我在横向中拍摄照片,然后等待对话框完成时,任何imageview中都没有显示任何内容,并且所有按钮都不起作用。它曾经在对话框即将显示时崩溃,但我修复了这个问题。以下是我的一些代码: public class AnnoyingMeterActivity ext

编辑:如果一个主体在调用OnConfiguration Changed时需要一个答案,我只需初始化我在onCreate中所做的所有变量

您好,我有一个应用程序,它显示一个进度对话框,然后在从相机拍摄的imageview中显示一幅图像。问题是当我在横向中拍摄照片,然后等待对话框完成时,任何imageview中都没有显示任何内容,并且所有按钮都不起作用。它曾经在对话框即将显示时崩溃,但我修复了这个问题。以下是我的一些代码:

public class AnnoyingMeterActivity extends Activity {

    Random r = new Random(System.currentTimeMillis());


    class ProgressThread extends Thread {
        Handler mHandler;
        final static int STATE_DONE = 0;
        final static int STATE_RUNNING = 1;
        int mState;
        int total;

        ProgressThread(Handler h) {
            mHandler = h;
        }

        public void run() {
            mState = STATE_RUNNING;
            total = 0;
            while (mState == STATE_RUNNING) {
                try {
                    Thread.sleep(55);
                } catch (InterruptedException e) {

                }
                Message msg = mHandler.obtainMessage();
                msg.arg1 = total;
                mHandler.sendMessage(msg);
                total++;
            }
        }

        /*
         * sets the current state for the thread, used to stop the thread
         */
        public void setState(int state) {
            mState = state;
        }
    }

    TextView tv;
    ImageView iv;
    TextView tv1;
    static final int PROGRESS_DIALOG = 0;
    ProgressThread progressThread;
    ProgressDialog progressDialog;
    Bitmap person;
    ImageView tiv;
    ImageView iv2;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button scanPersonButton = (Button) findViewById(R.id.scanPerson);
        scanPersonButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                scanPerson();

            }
        });
        tv = (TextView) findViewById(R.id.tv);
        iv = (ImageView) findViewById(R.id.annoyingMeterImage);
        iv.setBackgroundResource(R.drawable.finalmeter);
        tv1 = (TextView) findViewById(R.id.textView1);
        tiv = (ImageView) findViewById(R.id.imageView1);


    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      setContentView(R.layout.main);
    }


    protected void scanPerson() {

        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        startActivityForResult(intent, 0);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            person = (Bitmap) data.getExtras().get("data");
            showDialog(PROGRESS_DIALOG);
        }

    }

    protected void randomImageDisplayThing() {
                tiv.setBackgroundDrawable(new BitmapDrawable(person));
        switch (annoyingRating) {
        case 0:
            iv.setBackgroundResource(R.drawable.finalmeter0);
            break;
        case 1:
            iv.setBackgroundResource(R.drawable.finalmeter1);
            break;
        case 2:
            iv.setBackgroundResource(R.drawable.finalmeter2);
            break;
        case 3:
            iv.setBackgroundResource(R.drawable.finalmeter3);
            break;
        case 4:
            iv.setBackgroundResource(R.drawable.finalmeter4);
            break;
        case 5:
            iv.setBackgroundResource(R.drawable.finalmeter5);
            break;
        case 6:
            iv.setBackgroundResource(R.drawable.finalmeter6);
            break;
        case 7:
            iv.setBackgroundResource(R.drawable.finalmeter7);
            break;
        case 8:
            iv.setBackgroundResource(R.drawable.finalmeter8);
            break;
        case 9:
            iv.setBackgroundResource(R.drawable.finalmeter9);
            break;
        case 10:
            iv.setBackgroundResource(R.drawable.finalmeter10);
            break;
        case 11:
            iv.setBackgroundResource(R.drawable.finalmeter11);
            break;
        }

    }

    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case PROGRESS_DIALOG:
            progressDialog = new ProgressDialog(this);
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressDialog.setMessage("Scanning...");
            return progressDialog;
        default:
            return null;
        }
    }

    final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            int total = msg.arg1;
            progressDialog.setProgress(total);
            if (total >= 100) {
                dismissDialog(PROGRESS_DIALOG);
                progressThread.setState(ProgressThread.STATE_DONE);
                randomImageDisplayThing();
            }
        }
    };

    @Override
    protected void onPrepareDialog(int id, Dialog dialog) {
        switch (id) {
        case PROGRESS_DIALOG:
            progressDialog.setProgress(0);
            progressThread = new ProgressThread(handler);
            progressThread.start();
        }



    }
}

现在我真的不知道该怎么办。我认为问题可能与方向的改变有关。感谢您的帮助

尝试使用
AsyncTask
而不是自定义线程。由于一些事情假定在UI线程上工作,其余部分在后台线程和AsyncTask上工作,所以这很容易。另外,仅仅通过查看线程代码来调试线程代码既困难又不可靠

http://developer.android.com/reference/android/os/AsyncTask.html