Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ActionBar添加到PreferenceActivity_Java_Android_Android Activity_Android Actionbar_Android Preferences - Fatal编程技术网

Java 将ActionBar添加到PreferenceActivity

Java 将ActionBar添加到PreferenceActivity,java,android,android-activity,android-actionbar,android-preferences,Java,Android,Android Activity,Android Actionbar,Android Preferences,我正在尝试使用首选项活动进行设置活动。问题是无论我做什么,ActionBar都不会显示 我尝试了getSupportActionBar,getActionBar,setActionBar。什么都不管用。 我使用ActionBars查看其他应用程序设置。他们不使用首选项活动吗?如果您使用的是AppCompat主题,您必须注意以下几点 PreferenceActivity不扩展AppCompatActivity或不推荐的ActionBarActivity 作为解决方案,您可以创建一个首选项片段,并在

我正在尝试使用
首选项活动进行
设置
活动
。问题是无论我做什么,
ActionBar
都不会显示

我尝试了
getSupportActionBar
getActionBar
setActionBar
。什么都不管用。
我使用
ActionBar
s查看其他应用程序设置。他们不使用首选项活动吗?

如果您使用的是AppCompat主题,您必须注意以下几点

PreferenceActivity
不扩展
AppCompatActivity
或不推荐的
ActionBarActivity

作为解决方案,您可以创建一个
首选项片段
,并在标准的
AppCompatActivity
中使用它。当然,您也可以使用
工具栏

此外,使用新的22.1+appcompat,您可以使用扩展appcompat对任何活动的支持

您可以查看此官方链接,从中可以找到此技术的示例。

通过使用从DarkActionBar派生的主题明确设置活动主题,我们可以添加回操作栏。

我做了同样的事情,在我的设置活动中设置了一个动作栏,它对我很有效

1.首先在styles.xml中为设置活动添加不同的样式

<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> 

@颜色/阳光蓝
@颜色/阳光\深\蓝色
  • 最后,在设置活动的AndroidManifest标记中,您还需要添加设置主题: android:theme=“@style/settingsTime”


  • 这将在android版本大于或等于21的设备中为设置活动添加一个操作栏。

    这对我来说很有效

    只需将PreferenceActivity更改为AppCompatActivity,并在manifest.xml文件中为该特定活动添加
    parentActivityName

    AndroidManifest.xml

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

    是的,大多数人不会对包含设置的活动使用PreferenceActivity。我使用正常的活动,自己处理一切。检查这个
    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);
    
            }
        }