我有幾個片段一PreferenceActivity:如何從PreferenceActivity調用特定的PreferenceFragment?
R.xml.preferences:(縮短了更好的可讀性):
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="fragments.Fragment1" android:id="@+id/fragment1" [...] />
<header android:fragment="fragments.Fragment2" android:id="@+id/fragment2" [...] />
[...]
</preference-headers>
SettingsActivity:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
}
這將顯示與fragments.Fragment1
,fragments.Fragment2
,...如果SettingsActivity
開始的列表條目。
但現在我想通過一個包,從而開始活動時特定PreferenceFragment被打開:
,所以我說這SettingsActivity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.getBoolean("shortcut")) {
// directly jump to fragments.Fragment1
}
}
我試圖加載片段通過getFragmentManager().findFragmentById(R.id.fragment1)
,但是這返回null
。但即使我有正確的實例,我也不知道如何調用它。此外,調用loadHeadersFromResource(R.xml.preferences_fragment1, target);
不起作用 - 這將拋出一個RuntimeException「XML文檔必須以標記開頭; foundPreferenceScreen在二進制XML文件」。我沒有任何想法,並且對SO和Google進行搜索並沒有返回任何相關結果。
所以我的問題是:是否有可能從Activitiy的onCreate方法直接加載PreferenceFragment(例如fragments.Fragment1)?如果是這樣,怎麼樣?
正是我一直在尋找對於。謝謝! –
真的很酷,他們支持這一點。感謝分享。它也適用於我。 – lepert