【问题标题】:How to return from preference screen to main activity?如何从首选项屏幕返回到主要活动?
【发布时间】:2011-04-25 14:12:21
【问题描述】:

我有一项主要活动和一项偏好活动。在我的第一个活动中,我调用 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 没有被调用并且没有打印日志。我能多正确地做到这一点? 谢谢!

【问题讨论】:

    标签: android android-activity settings preferences android-preferences


    【解决方案1】:

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

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

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

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

    在 onPause() 方法中执行以下操作(我的理解是当我按下返回按钮时会调用此方法,对吧?)

    不,那行不通。 onPause() 来不及打电话给setResult()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多