5

我有一项主要活动和一项偏好活动。在我的第一个活动中,我调用 menu 并通过调用 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");
            }
        }
    }

但是我的 acyncTask 没有调用并且没有打印日志。我能多正确地做到这一点?谢谢!

4

1 回答 1

12

在我的第一个活动中,我调用 menu 并通过调用 startActivityForResult 来进行preferenceActivity。

startActivityForResult()与 a 一起使用是PreferenceActivity相当不寻常的。PreferenceActivity旨在与startActivity(). 如果开始PreferenceActivity关心首选项更改,它应该向SharedPreferences对象注册一个首选项更改侦听器。

然后我更改我的设置并希望返回主要活动并查看应用了新设置的主要活动。

我建议您改用 a SharedPreferences.OnSharedPreferenceChangeListeneronStart()或者,只需重新阅读您在原始活动或onResume()方法中关心的偏好。

在 onPause() 方法中执行以下操作(正如我正确理解的那样,当我按下后退按钮时会调用此方法,对吗?)

不,那是行不通的。onPause()来不及打电话了setResult()

于 2010-10-14T20:43:36.890 回答