這個問題對我來說非常煩人,所以在實施Sandor建議之後,我在Android Reference中尋找了更好的解決方案,並且看看我找到了什麼。
EditTextPreference繼承自DialogPreference並且此類具有showDialog方法,所以我使用show方法從EditTextPreference創建了一個新類,它的工作原理類似於charme。
下面是一些代碼:
public class MyEditTextPref extends EditTextPreference {
//...constructor here....
public void show() {
showDialog(null);
}
}
在我的settings.xml(至極我用來生成ActivitySettings佈局)我已經添加myEditTextPref
<package.that.contains.MyEditTextPreferences
android:key="myPref"
android:title="@string/pref_title"
android:summary="@string/pref_summary"
android:dialogTitle="@string/dialog_title"
android:dialogMessage="@string/dialog_message"
/>
我做的最後一件事是PreferenceAct中的onSharedPreferenceChanged方法ivity
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equalsIgnoreCase(MY_CHECK_BOX)) {
MyEditTextPreferences myPref = (MyEditTextPreferences) findPreference("myPref");
myPref.show();
}
}
PS:其實我沒有使用PreferenceFragment因爲我想蜂窩預兼容性,但我不認爲這代碼太大變化。
有史以來最好的答案:)感謝很多:) – cV2
我得到一個'BadTokenException:無法添加窗口'stacktrace有時。任何想法爲什麼? – theblang
當我離開PreferenceActivity然後返回時似乎會發生。我想''context'可能會有什麼事情呢? – theblang