[英]Android Studio - Settings Activity with just one fragment/no Headers
我是 android 開發的新手,遇到了一個問題:我有一個普通的選項卡式 MainActivity 並從 Android Studio 的設置活動模板創建了一個 SettingsActivity。 MainActivity 是 SettingsActivity 的分層父級。
在 MainActivity.java 中啟動 SettingsActivity 的代碼:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
我只想有一個設置頁面。 根據 Android 指南“addPreferencesFromResource();” 已棄用並被 Preference 標頭取代。 但是有了這些首選項標題,我在 MainActivity 和我的實際設置頁面(在 pref_settings.xml 中定義)之間又多了一頁。 onCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new PillPreferenceFragment())
.commit();
}
嗯,它確實解決了我的問題。 啟動 SettingsActivity 時會顯示 pref_settings.xml。 但是后退按鈕不再起作用。 它總是“返回”到 SettingsActivity 而不是 MainActivity。 所以這是一個無限循環。 有誰知道是什么問題以及如何解決它?
我希望,我的描述是可以理解的。 如果您需要任何進一步的信息,請告訴我。
非常感謝! :)
我自己找到了解決方案。
我必須在 SettingsActivity.java 中添加此代碼:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
試試下面的代碼:
Intent i = new Intent(getApplicationContext(), SettingsActivity.class);
startActivity(i);
finish();
在應用程序標簽的 android manifest 中添加這一行:
android:launchMode="singleTask"
並且不要忘記覆蓋后按按鈕:
@Override
public void onBackPressed() {
super.onBackPressed();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.