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);
}
}