簡體   English   中英

Android Studio - 設置活動只有一個片段/沒有標題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM