我用一些标签写了一个FragmentActivity。当我用startActivityForResult调用一个额外的活动(我用它来设置用户首选项)时(如果它在FragmentActivity或ListFragment中没有差异),当我启动这个首选项活动时,会调用onActivityResult方法,但是当我完成它时,不会调用我期待它(如果它在FragmentActivity或ListFragment中再没有差异)。在完成首选项活动后,此方法根本不会被调用。
我的问题是我想在完成首选项活动后刷新当前选项卡(并设置最后使用的选项卡ID),我希望能够在onActivityResult方法中执行此操作。
这是创建首选项活动的类:
public abstract class ListFragmentBase<I> extends ListFragment implements
LoaderCallbacks<List<I>> {
这是将我转发到此类中的首选项活动的方法:
protected void forwardToPreferences(int currentTab){
Intent intent = new Intent(getActivity(), GlobalPreferencesActivity.class);
getActivity().startActivityForResult(intent, 10);
}
这是在调用上面的方法之后调用的方法,而不是在我完成被调用的活动之后调用的方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
这是偏好活动:
public class GlobalPreferencesActivity extends Activity {
并在该课程内部,您将看到我如何调用结束方法:
TextView confirmSettings = (TextView) view.findViewById(R.id.confirm_settings);
confirmSettings.setTextSize(PreferenceHelper.getSizeHeader(getApplicationContext()));
confirmSettings.findViewById(R.id.confirm_settings).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(BaseFragmentActivity.lastActivity != null){
BaseFragmentActivity.lastActivity.onRefreshData();
}
ComponentName callingActivity = getCallingActivity();
GlobalPreferencesActivity.this.finish();
}
});
答案 0 :(得分:8)
请确保您的调用活动不是AndroidManifest文件中的singleInstance。确保它是singleTop或标准。
希望这对你们也有用
答案 1 :(得分:3)
这是Android的错误
onActivityResult() called prematurely
和
Why does result from startActivityForResult come before activity really starts?
我不知道您使用的是哪个版本以及是否已经解决/更正
答案 2 :(得分:0)
onActivityResult,在onResume之后调用,
当你从你的活动跳到另一个活动而没有调用完成时的基本原因。然后最后一个活动进入onStop状态。
在onStop,onstart之后,onResume方法调用然后调用onActivityResult。