Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
Android 重新创建活动后,对话框中的对象和变量为空_Android_Dialog_Android Camera_Activity Lifecycle - Fatal编程技术网

Android 重新创建活动后,对话框中的对象和变量为空

Android 重新创建活动后,对话框中的对象和变量为空,android,dialog,android-camera,activity-lifecycle,Android,Dialog,Android Camera,Activity Lifecycle,在我的活动中,当我单击actionbar中的菜单项时,会出现一个对话框。此对话框有一个ImageView。当我点击ImageView时,我可以打开相机。当我拍摄一张照片时,我的应用程序强制关闭,我想这是因为我无法在活动重新创建后在对话框中引用imageView,因为它不存在或未初始化 onActivityResult case PICK_FROM_CAMERA_EDIT: if (data != null) { Uri imageuri = data.getD

在我的活动中,当我单击actionbar中的菜单项时,会出现一个对话框。此对话框有一个ImageView。当我点击ImageView时,我可以打开相机。当我拍摄一张照片时,我的应用程序强制关闭,我想这是因为我无法在活动重新创建后在对话框中引用imageView,因为它不存在或未初始化

onActivityResult

case PICK_FROM_CAMERA_EDIT:             
if (data != null) {
     Uri imageuri = data.getData();
    Log.i("CAMERA_URI", String.valueOf(imageuri)); //content://media/external/images/media/72954
    Bitmap bitmap;
    try {
        //creating bitmap from uri
        edit_dialog.iv_bucket2.setImageBitmap(bitmap); //force close

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
看到了吗?这就是问题所在:

edit_dialog.iv_bucket2.setImageBitmap(scaled); 
edit_dialog
不为空,但
edit_dialog.iv_bucket2
为空

这在
onCreate()
中定义为

edit_dialog = new EditBucketDialog(MyActivity.this);
点击菜单项时打开为

edit_dialog = new EditBucketDialog(MyActivity.this);
edit_dialog.setCancelable(true);
edit_dialog.show();
简而言之,这是一个类:

public class EditBucketDialog extends Dialog {

    //variables
    ImageView iv_bucket2;

     @Override
      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.edit_dialog);
            iv_bucket2 = (ImageView)findViewById(R.id.iv_bucket2);
    }
}
对于我想从onActivityResult引用的对话框中的其他变量也是如此

我也有

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

奇怪的是,这种情况只发生一次。我需要卸载并安装该应用程序才能再次出现此问题

您在何处铸造编辑对话框.iv_bucket2?什么?我不懂像edit_dialog.iv_bucket2=(位图)edit_dialog.findViewById(myid);显然,在对话课上。我添加了行,好吧,我这样问是因为我认为您需要重新初始化小部件,我有点困惑您调用摄像头以及在同一个按钮上显示对话框?如果我是对的,那么在设置图像之前,需要在相机单击之后初始化对话框类。