簡體   English   中英

將ActionBar添加到PreferenceActivity

[英]Add ActionBar to a PreferenceActivity

我正在嘗試使用PreferenceActivity進行Settings Activity 問題是,無論我做什么, ActionBar都不會出現。

我試過getSupportActionBargetActionBarsetActionBar 什么都行不通。 我看到ActionBar的其他應用程序設置。 他們不使用PreferenceActivity嗎?

如果您使用的是AppCompat主題,則必須注意一些要點。

PreferenceActivity 不會擴展 AppCompatActivity或不推薦使用的ActionBarActivity

作為解決方案,您可以在執行時創建PreferenceFragment ,並在標准AppCompatActivity 使用它 當然,您也可以使用Toolbar

此外,使用新的22.1+ appcompat,您可以使用AppCompatDelegate將AppCompat的支持擴展到任何Activity。

您可以查看AppCompatPreferenceActivity的官方鏈接,您可以在其中找到此技術的示例。

通過使用從DarkActionBar派生的主題明確地設置SettingActivity主題,我們可以添加回Action Bar。

我也在設置活動設置了一個操作欄,它對我有用。

1.首先在styles.xml中為Settings Activity添加不同的樣式

<style name="SettingsTheme" parent="AppTheme"/>

2.然后為版本21(v21 / styles.xml)創建一個單獨的styles.xml ,如下所示

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Settings activity theme. -->
    <style name="SettingsTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
        <item name="android:colorPrimary">@color/sunshine_blue</item>
        <item name="android:colorPrimaryDark">@color/sunshine_dark_blue</item>
    </style>

</resources> 
  1. 最后在您的SettingsActivity的AndroidManifest標簽中,您還需要添加設置主題:

    機器人:主題= “@風格/ SettingsTheme”

這將在Android版本大於或等於21的設備中為您的設置活動添加操作欄。

這對我有用,

只需將PreferenceActivity更改為AppCompatActivity,並在manifest.xml文件中為該特定活動添加parentActivityName

AndroidManifest.xml中

 <activity
            android:name=".SettingsActivity"
            android:label="@string/title_activity_settings"
            android:parentActivityName=".HomeActivity"></activity>

SettingsActivty.java

public class SettingsActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {


    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();


    }


    public static class MyPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);

        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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