0

Preference 类允许设置一个 Intent,让一个偏好在单击时激活另一个活动,但我无法找到使用此方法处理活动结果的方法。还有一个 DialogPreference,我可以在其中提供自定义视图,但我无法直接访问我想使用的视图,只能访问一个活动。

再深入一点,看起来 RingtonePreference 在 PreferenceManager 上使用了一些包内部方法来接收来自已启动子活动的结果,但由于这些是包内部的,我无法这样做。

是否有任何其他方法可以使用返回结果的活动来处理自定义首选项(结果将保存为首选项的值)?

4

1 回答 1

2

我还注意到 PreferenceActivity 不会返回 onActivityResult。话虽如此,您的 SubActivity 是否有原因无法直接保存首选项?如果您需要检查它的值,您可以在 PreferenceActivity 的 onResume 处检查它作为一种解决方法。

//SubActivity onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btn = (Button) findViewById(R.id.Button01);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            SharedPreferences prefs = getSharedPreferences(TestPreferenceActivity.PREFS_FILE, MODE_WORLD_READABLE);
            prefs.edit().putString("mykey", "someValue").commit();
            finish();
        }});
}

//PreferenceActivity onResume
@Override
protected void onResume() {
    Log.d(TAG, "Preferences Resumed");
    //Check for new Preference Values
    SharedPreferences prefs = getSharedPreferences(PREFS_FILE, MODE_WORLD_READABLE);
    String value = prefs.getString("mykey", "defValue");
    Log.d(TAG, "Current value is: " + value);
    super.onResume();
}
于 2010-12-05T23:21:40.520 回答