我有一个2小时的短途旅行有一个问题,我无法通过Intent将一个简单的字符串传递给调用FragmentActivity。
启动通过Intent返回数据的FragmentActivity的代码很简单:
startActivityForResult(intent, REQUEST_NEWCATCH);
目标FragmentActivity中的代码尝试按如下方式传回String:
String mImagePath; // this is the string I want to pass
Intent i = new Intent();
i.putExtra(EXTRA_IMAGE_PATH, mImagePath);
getActivity().setResult(Activity.RESULT_OK, i);
每当我读到onActivityResult中的值时,我都会得到null:
if (requestCode == REQUEST_NEWCATCH) {
String imgfile_path = data.getStringExtra(NewCatchFragment.EXTRA_IMAGE_PATH);
Log.d(TAG, "imgfile_path=" + imgfile_path);
}
我尝试传递一个整数没问题。我改变它来传递一个字符串常量,如“fubar”,这样没问题:
i.putExtra(EXTRA_IMAGE_FILENAME, "fubar");
那是我意识到其他事情不对劲的时候。事实证明问题似乎是因为我在FragmentActivity的onStop()方法中执行了setResult操作。一旦我将设置意图的代码移动到另一个“早期”方法,它就可以正常工作。
我不知道为什么这应该是一个问题。我当然能够打印和访问变量,系统似乎能够通过onStop中的intent传递整数或字符串常量,但不能传递属于正在运行的派生FragmentActivity类本身的变量(声明String mImagePath只是在类声明之下)。
我没有通过搜索找到为什么这应该是一个问题。当FragmentActivity命中onStop(我正在使用支持库)时,它应该仍然拥有完成此任务所需的一切。有人可以通知我解释我在这里没有看到的内容吗?
编辑另一件事 - 我的片段被“保留” - 在调用片段onStop时,是否有可能需要一些与活动相关的存储?