如何从偏好屏幕返回主要活动?

Geo*_*zov 5 settings android preferences android-preferences android-activity

我有一个主要活动和一个preferenceActivity.在我的第一个活动中,我调用menu并通过调用startActivityForResult继续使用preferenceActivity.

                case R.id.settings:
                startActivityForResult(new Intent(this, SettingsActivity.class), LAUNCH_SETTINGS);
                return true;
Run Code Online (Sandbox Code Playgroud)

然后我更改我的设置并希望返回主要活动,并查看应用了新设置的主要活动.在onPause()方法中执行以下操作(因为我正确理解当按下后退按钮时会调用此方法,对吧?)

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

关于主要活动

 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");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Com*_*are 12

在我的第一个活动中,我调用menu并通过调用startActivityForResult继续使用preferenceActivity.

使用startActivityForResult()a PreferenceActivity是相当不寻常的.PreferenceActivity旨在与startActivity().一起使用.如果开始PreferenceActivity关心偏好的人改变,则应该向SharedPreferences对象注册偏好改变监听器.

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

我建议你SharedPreferences.OnSharedPreferenceChangeListener改用.或者,只需重新阅读您在原始活动onStart()onResume()方法中关注的首选项.

在onPause()方法中执行以下操作(因为我正确理解当按下后退按钮时会调用此方法,对吧?)

不,那不行.onPause()来电太晚了setResult().