【发布时间】:2011-03-22 06:17:58
【问题描述】:
我从我的工作人员活动中启动Activity(PreferenceActivity 的后代),如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1458)
loadInfo();
}
void showSettingsDialog()
{
startActivityForResult(new Intent().setClass(this, MyConfigure.class), 1458);
}
MyConfigure 类没有任何 setResult() 调用。事实上,MyConfigure 类除了使用addPreferencesFromResource 加载首选项的OnCreate() 之外没有任何代码。
现在onActivityResult 在MyConfigure 活动运行之后过早地被requestCode 或1458 调用。在 1.6 和 2.1 仿真器以及 2.1 设备上进行了测试。 setResult()埋在PreferenceActivity的某个地方有电话吗?或者如何解释这个过早的呼叫?
【问题讨论】:
-
一个活动不会在 setResults() 结束,它会在 finish() 结束。你能显示你的 MyConfigure 活动的 onCreate 方法吗?
-
对,它没有。但是,确实会提前调用 setResult() ,我想知道它是什么。 onCreate 的代码很简单: public class MyConfigure extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } }
-
你怎么知道 setResult 被调用了?
-
这正是我创建问题的目的。找出原因,为什么过早调用 onActivityResult。
-
logcat 输出在此期间的内容是什么?特别是“ActivityManager”标签,它显示正在调用哪些 Intent。