onActivityResult在Activity启动时被调用,而不是在完成时调用

我用一些标签写了一个FragmentActivity。 当我用startActivityForResult调用额外的活动(我用它来设置用户的喜好)(如果它在FragmentActivity或ListFragment没有差异)onActivityResult被调用,当我开始这个偏好活动,但不是当我完成它作为我期望它(再次没有差异,如果它在FragmentActivity或在ListFragment)。 在我完成偏好活动之后,这个方法根本不会被调用。

我的问题是,我想刷新我的当前选项卡(并设置最后使用的选项卡ID),我完成首选项活动后,我希望能够在onActivityResult方法中做到这一点。

这是创build偏好活动的类:

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(); } }); 

Solutions Collecting From Web of "onActivityResult在Activity启动时被调用,而不是在完成时调用"

这是Android的一个错误

onActivityResult()提前调用

为什么startActivityForResult的结果来自活动真正开始之前?

我不知道你使用哪个版本,是否已经解决/更正

请确保AndroidManifest文件中您的调用不是singleInstance。 确保它是单顶或标准的。

希望这也能为你们工作