Android PreferenceActivity实例

问题描述:

如何查找由框架创建的PreferenceActivity实例?Android PreferenceActivity实例

* * *

我的第一课。

/** This is MyAppSettings class, The instance of this class will be created by a framework **/ 

public class MyAppSettings extends PreferenceActivity { 
    protected MySeekBarPreference mSeekBarPref; 

    @Override 
    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     addPreferencesFromResource(R.xml.prefs); 

     mSeekBarPref = (MySeekBarPreference)super.findPreference("my_key"); 
    } 
} 

* * *

我的第二类。

public class MySeekBarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener { 

     // in whis code I need to get the instance of the MyAppSettings, which was 
     // created by Android framework. (I paste a hypothetical func getTheInstanceOfMyAppSettings() :)) 
    private MyAppSettings mAppSettings = getTheInstanceOfMyAppSettings(); 

我可以通过ID或其他东西找到它吗?

+1

哪里,怎么样?在你的语境中可能是“this”。请编辑您的原始问题,并发布您创建的详细代码以及您想要查找实例的位置。 – Pentium10 2010-07-11 13:49:34

我猜你正在寻找getPreferenceScreen()

你可以用它来修改在XML中定义的PreferenceScreen

例如:

private void disableHardKeyboardOptions() { 
    Preference pref = getPreferenceScreen().findPreference("pref_hardkeyboard_option"); 
    pref.setEnabled(false); 
    pref.setSummary(custom.getString(R.string.pref_no_hardkeyboard)); 
}