![](/img/trans.png)
[英]Android create a PreferenceFragment without a PreferenceActivity
[英]Android: how to open a ListPreference dialog from outside PreferenceActivity/PreferenceFragment?
我已根據PreferenceFragment
為我的應用程序創建了一個設置菜單,並希望從應用程序的其他位置訪問設置對話框,而無需打開設置菜單。
我的設置菜單包含:
當我從主要活動中單擊此菜單項時,我想顯示相同的對話框:
主Activity
有一個ListFragment
,它是所有UI處理代碼的所在。 也不是PreferenceActivity
或PreferenceFragment
。
我只是想調用相同的PreferenceFragment
對象來進入對話框,否則我必須編寫自定義代碼來手動處理首選項更改,我想避免。
我認為將PreferenceFragment
添加到主Activity
的FragmentManager
會正確實例化它,但它似乎不起作用。
從我的菜單處理程序代碼“排序”選項:
SettingsFragment fragment = (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsActivity.FRAGMENT_TAG);
// first run case
if (fragment == null) {
fragment = SettingsFragment.newInstance(getActivity());
getFragmentManager().beginTransaction().add(fragment, SettingsActivity.FRAGMENT_TAG).commit();
}
CustomListPreference listPref = (CustomListPreference) fragment.findPreference(SettingsFragment.KEY_PREF_SORTORDER);
listPref.show(); // invokes showDialog(null)
這與listPref
上的NullPointerException
崩潰,這表明PreferenceFragment
未正確初始化。
有沒有辦法實現這種效果,還是我必須將功能寫為AlertDialog並手動處理首選項更改?
我認為你必須自己在Preference類之外編寫這個功能。
Preference,PreferenceActivity和PreferenceFragment都旨在協同工作,為Android應用程序提供一致的UIX。 因此,建議按原樣使用它們。
您不能直接在常規活動中復制這兩個類之外的PreferenceActivity或PreferenceFragment的UI,因為UI是從Preference對象構建的,而不是像常規活動這樣的View對象。 因此,如果您想要特定的UI,則必須嘗試使用自定義視圖復制它。
https://discussions.udacity.com/t/way-to-do-listpreference-outside-of-settings-menu/45473
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.