如何从偏好设置屏幕返回到主活动?

5

我有一个主Activity和一个PreferenceActivity。在我的第一个Activity中,我调用菜单并通过调用startActivityForResult进入PreferenceActivity。

                case R.id.settings:
                startActivityForResult(new Intent(this, SettingsActivity.class), LAUNCH_SETTINGS);
                return true;

我更改了设置并希望返回到主活动,并查看应用了新设置的主活动。在onPause()方法中执行以下操作(如果我正确理解,当我按返回按钮时,该方法将被调用,对吗?)

   @Override
     protected void onPause() {
         super.onPause();
         setResult(RESULT_OK, new Intent(this, MainActivity.class));
         finish();
     }

在主活动中
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == LAUNCH_SETTINGS) {
            if (resultCode == RESULT_OK) {
                new RefreshList().execute(ACTION_SELECT);
                Log.d(TAG, "On activity result");
            }
        }
    }

但是我的异步任务没有被调用,日志也没有打印。我应该如何正确地解决这个问题呢?谢谢!

1个回答

12
在我的第一个活动中,我调用菜单并通过调用startActivityForResult进入preferenceActivity。
使用startActivityForResult与PreferenceActivity相结合是相当不寻常的。PreferenceActivity的设计是要使用startActivity。如果启动PreferenceActivity的人关心偏好更改,则应向SharedPreferences对象注册偏好更改侦听器。
然后我更改设置并希望返回到主活动并查看应用新设置的主活动。
我推荐您使用SharedPreferences.OnSharedPreferenceChangeListener。或者,在原始活动的onStart()或onResume()方法中简单地重新读取您关心的首选项。
在onPause()方法中执行以下操作(按照我的理解,当我按下返回按钮时将调用该方法,对吗?)
不会的。onPause()太晚了,不能调用setResult()。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接