所以我跟着this guide on Android Developers。他們建議使用片段來向用戶顯示設置。在活動中顯示和隱藏SettingsFragment
我創建的XML和字符串和片段:
public class SettingsFragmentApp extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_app);
}
}
我想表明這是我的MainActivity頁面上,而無需創建另一個活動,只有承載此片段(我認爲谷歌建議後optioon殺死點......爲什麼我應該爲一個片段創建另一個活動?)。所以我增加了一個選項,以MENU
和我處理像這樣的MainActivity
:
//inside onOptionsItemSelected(MenuItem item)
case (R.id.action_settings_user):
getFragmentManager().beginTransaction().replace(android.R.id.content,
new SettingsFragmentUser()).commit();
return true;
這樣的設置片段顯示爲預期,但只要用戶點擊後退按鈕退出應用程序,因爲它仍然是在MainActivity
。
所以問題是我該如何處理後退按鈕,以便保存設置更改並將用戶恢復到MainActivity?
非常感謝您的意思如果我有很多不同的設置碎片,我可以只用一個Activity來處理它們?如果是的話,你可以分享派生的活動代碼嗎? –
我的意思是你不應該將'Fragments'添加到後端堆棧,而只是在應用的導航層次結構中爲每個級別創建一個'Activity'。對於同一級別的內容,您可以使用「FragmentTransactions」。例如在你的情況下,我會創建一個'SettingsActivity'。當有人在你的應用程序中點擊設置選項時,你打開'SettingsActivity'並在'Fragment'中的這個'Activity'中顯示設置。如果您有多頁設置,則使用多個「碎片」通過此「活動」中的頁面進行翻頁。 –
但是,如果你有一個額外的細節視圖,你會創建一個額外的'活動'。規則是如果你更深層次的內部使用需要另一個'活動',如果你留在同一層次上,你需要另一個'片段'。 –