9

我写了一个带有一些标签的 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();
        }
    });
4

4 回答 4

9

请确保您的调用活动不是 AndroidManifest 文件中的 singleInstance。确保它是 singleTop 或 standard。

希望这对你们也有用

于 2016-09-16T06:13:58.447 回答
4

这是安卓的bug

onActivityResult() 过早调用

为什么 startActivityForResult 的结果会在活动真正开始之前出现?

我不知道您使用的是哪个版本以及是否已解决/更正

于 2013-08-16T12:10:55.443 回答
0

onActivityResult,在 onResume 之后调用,

当您从您的活动跳转到另一个活动时没有调用完成的基本原因。然后最后一个活动进入 onStop 状态。

在 onStop、onstart、onResume 方法调用之后调用 onActivityResult。

于 2018-02-01T06:37:06.940 回答
0

onActivityResult 调用时......假设我们有 2 个活动,您从一个活动转到另一个活动,然后现在您处于第二个活动,如果您完成第二个活动,则跳回第一个活动然后在 onStop、onrestart、onstart、onResume 方法调用之后调用 onActivityResult。

于 2021-09-10T10:10:56.237 回答