android onactivityresult 生命周期,什么时候片段的onActivityResult被称为片段生命周期?...

当我启动Camera intent时,我注意到onActivityResult在fragment生命周期中的onResume之前被调用。

我还注意到在onStart之后onStart onActivityResult 。

但这是奇怪的部分:我有variablesfileUri ==“一些图像路径”。 这个variables是

onStart中的NOT NULL。

onActivityResult中为NULL

在onResume中再次为NOT NULL

看logCat

12-03 14:39:42.418: D/Fragment1(29220): onStart fileUri: file:///mnt/sdcard/OPS_IMAGES/IMG_20121203_143933.jpg 12-03 14:39:42.463: W/PhoneWindow(29220): Previously focused view reported id 2131034140 during save, but can't be found during restore. 12-03 14:39:42.463: D/Fragment1(29220): onActivityResult fileUri is NULL!!! 12-03 14:39:42.468: D/Fragment1(29220): onResume fileUri: file:///mnt/sdcard/OPS_IMAGES/IMG_20121203_143933.jpg

最糟糕的是,这只发生在50%的时间。 另外50%的onActivityResult可以毫无问题地访问fileUri值…

我该怎么调试这个?

注意:为简单起见,我没有包含onResume,onStart,onActivityResult方法的代码。 它们只是具有variables检查和日志调用的基本方法。 如果需要,我将编辑问题并添加这些方法。

注意2:我使用谷歌支持库来支持较旧的API版本上的片段。

要回答您的原始问题,这是Lifecycle回调的顺序

12-09 16:38:41.800 10227-10227/org.Test I/Fragment: ## OnStart() 12-09 16:38:41.820 10227-10227/org.Test I/Fragment: ## OnActivityResult() 12-09 16:38:41.821 10227-10227/org.Test I/Fragment: ## OnResume()

这不是我一直在修补的区域或我遇到过的问题,但如果您的variables因任何原因不可见……您是否尝试使用不同types的方式来引用该值?

我的建议是尝试使用SharedPreferencesvariables并在编辑器中保存值并将其拉回。 这可能不是最佳解决方案,但目前可能是一种解决方法。

我有来自logcat的类似错误消息,这就是我偶然发现你的post。

"01-27 11:13:42.899: W/PhoneWindow(1591): Previously focused view reported id 16908862 during save, but can't be found during restore."

我能够解决我的问题的方式是我的“空白构造函数”并没有重新解决我的片段问题。 在片段中我只有一个variables是一个’ID’,当用户选择一个带有选择的项目时,它会传回我的活动。 我通过使用传入的值调用我的普通构造函数来简单地重新设置我的片段。

例如。

public UIDialogFragmentVolume() { this(ID); } public UIDialogFragmentVolume(int typeID) { ID = typeID; }

我希望这可以帮助您确定并解决您的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值