我有一个主要活动和一个preferenceActivity。在我的第一个活动中,我调用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没有调用并且没有打印日志。我怎么能正确地做到这一点? 谢谢!
答案 0 :(得分:12)
在我的第一个活动中,我调用menu并通过调用startActivityForResult继续使用preferenceActivity。
将startActivityForResult()
与PreferenceActivity
一起使用是相当不寻常的。 PreferenceActivity
旨在与startActivity()
一起使用。如果开始PreferenceActivity
关注首选项的人更改,则应该使用SharedPreferences
对象注册首选项更改侦听器。
然后我更改了我的设置并希望返回主要活动并查看应用了新设置的主要活动。
我建议您改用SharedPreferences.OnSharedPreferenceChangeListener
。或者,只需在原始活动的onStart()
或onResume()
方法中重新阅读您关注的偏好设置。
在onPause()方法中执行以下操作(因为我正确理解当按下后退按钮时会调用此方法,对吗?)
不,那不行。 onPause()
来电setResult()
为时已晚。