Android 未为SherlockFragmentActivity调用onActivityResult(…)
我在未调用ActivityResult(…)时遇到问题。我正在改编另一个应用程序中的工作代码,在这个应用程序中一切正常,但我现在使用的是Android 未为SherlockFragmentActivity调用onActivityResult(…),android,actionbarsherlock,android-fragmentactivity,Android,Actionbarsherlock,Android Fragmentactivity,我在未调用ActivityResult(…)时遇到问题。我正在改编另一个应用程序中的工作代码,在这个应用程序中一切正常,但我现在使用的是Fragments 主要的活动如下所示 public class RecordingsPagerActivity extends SherlockFragmentActivity implements RecordingsListFragment.Callbacks { private final int SHOW_DETAIL_DIALOG
Fragments
主要的活动如下所示
public class RecordingsPagerActivity extends SherlockFragmentActivity
implements RecordingsListFragment.Callbacks {
private final int SHOW_DETAIL_DIALOG = 1234;
// RecordingsListFragment.Callbacks method
@Override
public void onRecordingsItemSelected(int oid) {
showGuideDetailDialog(oid);
}
...
private void showGuideDetailDialog(int oid) {
Intent i = new Intent(this, GuideDetailActivity.class);
i.putExtra("oid", oid);
startActivityForResult(i, SHOW_DETAIL_DIALOG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "onActivityResult() entered - requestCode: " + requestCode + " - resultCode: " + resultCode);
...
}
}
基本上,当选择片段中的列表项时,片段
调用onRecordingsItemSelected(…)
回调方法,GuideDetailActivity
(扩展了活动
)显示良好。根据我选择的按钮,GuideDetailActivity
中的onClick(…)
方法设置结果并调用finish()
问题是,我从未在logcat中看到Log.d(…)
的输出。正如我所说,它在一个只使用活动创建的应用程序中运行良好(它是从我的原始源代码中复制/粘贴的)
是否有什么东西会导致片段活动
无法收到结果,这意味着我需要以不同的方式执行操作?您是否有任何片段实现了onActivityResult()
?否。我应该这样做吗?或者你的意思是他们可能正在拦截结果?片段还可以使用startActivityForResult()
并实现onActivityResult()
。框架应该将结果路由到正确的位置(基于requestCode
AFAIK)。我在问你的碎片是否会干扰这一地区的主要活动。如果你被难倒了,如果你能创建一个重现你的问题的示例项目,把它贴在某个地方,我会看一看。@commonware:好的,谢谢你的想法。我开始认为我应该使用Fragment
方法来处理startActivityForResult()
和onActivityResult()
,因为寻呼机中的4个片段之间存在细微的差异。然后,我可以使用从片段中的onActivityResult()
方法回调到FragmentActivity
。谢谢你抽出时间。