startActivityForResult 不会 return 到 Activity 的同一个实例
startActivityForResult doesn't return to the same instance of Activity
我正在使用以下代码从相机拍摄照片。我在 CameraActivity
class 中使用 startActivityForResult
作为 ACTION_IMAGE_CAPTURE
意图。相机可以打开,拍照效果很好。但是当它回到 CameraActivity
时,它会进入 CameraActivity
的另一个实例。我在这两种方法中打印 hascode 值,它给出了不同的值。我不明白为什么它会创建两个活动。有人知道这个错误吗?
public class CameraActivity extends Activity{
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
setContentView(R.layout.fragment_imageview);
imageView = (ImageView)findViewById(R.id.imageview);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
System.out.println(this.hashCode());
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, 2);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 2 && resultCode == RESULT_OK){
System.out.println(this.hashCode());
Bundle args = data.getExtras();
Bitmap bitmap = (Bitmap)args.get("data");
imageView.setImageBitmap(bitmap);
}
}
}
在相机应用程序运行期间,系统可能正在破坏您的 activity。当相机应用程序启动时,您的应用程序处于后台,因此它有资格被销毁。您可以通过将日志记录添加到您的 onDestroy 覆盖来测试它。
我正在使用以下代码从相机拍摄照片。我在 CameraActivity
class 中使用 startActivityForResult
作为 ACTION_IMAGE_CAPTURE
意图。相机可以打开,拍照效果很好。但是当它回到 CameraActivity
时,它会进入 CameraActivity
的另一个实例。我在这两种方法中打印 hascode 值,它给出了不同的值。我不明白为什么它会创建两个活动。有人知道这个错误吗?
public class CameraActivity extends Activity{
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
setContentView(R.layout.fragment_imageview);
imageView = (ImageView)findViewById(R.id.imageview);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
System.out.println(this.hashCode());
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, 2);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 2 && resultCode == RESULT_OK){
System.out.println(this.hashCode());
Bundle args = data.getExtras();
Bitmap bitmap = (Bitmap)args.get("data");
imageView.setImageBitmap(bitmap);
}
}
}
在相机应用程序运行期间,系统可能正在破坏您的 activity。当相机应用程序启动时,您的应用程序处于后台,因此它有资格被销毁。您可以通过将日志记录添加到您的 onDestroy 覆盖来测试它。