Sud*_*han 38 android android-camera-intent android-activity
我有两项活动(A1,A2).A1调用A2,从A2调用相机意图,如下所示
launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath);
startActivityForResult(launchIntent,CAMERA_REQUEST);
Run Code Online (Sandbox Code Playgroud)
它打开相机,我可以拍照.但是当我点击保存按钮(s3中的勾选按钮)时出现问题,我的onActivityResult没有被调用,而是调用了A2的onDestroy方法.我在onActivityResult fn中完成的逻辑很少.
我已经阅读了Stackoverflow中的一些关于此的帖子,但我无法从中得到有用的输出.我的第二个活动(A2)有我的清单
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait
Run Code Online (Sandbox Code Playgroud)
注意:在HTC One X中我的onActivityResult fn被调用,但在我的S3中,第二个Activity(A2)被破坏了
Plz分享你对此的想法.提前致谢
小智 80
我有同样的问题.我会疯了但最后我在这里找到了解决方案.问题是当你点击相机的"保存"按钮时,活动调用改变方向方法,它将被破坏并重新创建.试着设定
android:configChanges="orientation|screenSize"
在android清单中(不仅android:configChanges="orientation"因为这里的建议,它不适用于API级别13或更高级别).
它可以防止破坏活动,对我有用.
Raj*_*wal 37
启动相机需要大量内存.因此,在内存较低的设备上,android系统关闭在后台运行的Activities,因此调用onCreate().由于你给出的这个photopath变为null,你将无法获得保存的图像.
解决方案是在系统破坏您的活动时保存photopath,然后再次恢复.
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("photopath", photopath);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("photopath")) {
photopath = savedInstanceState.getString("photopath");
}
}
super.onRestoreInstanceState(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)
如果你在Fragment上这样做的话.
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("photopath", photopath));
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("photopath")) {
photopath = savedInstanceState.getString("photopath");
}
}
super.onViewStateRestored(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)
小智 23
确保您没有"不要保持活动"开发人员设置,因为它会破坏您要离开的活动.
laa*_*lto 13
相机应用程序需要大量内存并释放内存,操作系统必须杀死后台应用程序,包括你的.这对所有Android应用都是正常的.当相机应用程序返回时,您的活动将被重新创建.要保留活动状态信息,请覆盖onSaveInstanceState()以存储数据并将其读回onCreate().
| 归档时间: |
|
| 查看次数: |
21737 次 |
| 最近记录: |