Preference类允许设置Intent,让Click在点击时激活另一个活动,但是我无法找到使用此方法处理活动结果的方法。还有DialogPreference,我可以在其中提供自定义视图,但我无法直接访问我想要使用的视图,只能访问活动。
进一步挖掘,看起来RingtonePreference在PreferenceManager上使用了一些包内部方法来接收来自已启动子活动的结果,但由于这些是包内部,我无法做同样的事情。
是否有其他方法可以使用返回结果的活动处理自定义首选项(其中结果将保存为首选项的值)?
答案 0 :(得分: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();
}