我想用Settings
做一个Activity
PreferenceActivity
。问题是,无论我做什么,ActionBar
都不会出现。
我试过getSupportActionBar
,getActionBar
,setActionBar
。什么都行不通。我看到ActionBar
s的其他应用程序设置。他们不使用PreferenceActivity
吗?
如果您使用的是AppCompat主题,则必须注意一些要点。
PreferenceActivity
不延伸AppCompatActivity
或弃用的ActionBarActivity
。
作为解决方案,您可以创建一个PreferenceFragment
,并在标准的AppCompatActivity
中使用它。当然你也可以使用Toolbar
。
此外,使用新的22.1+ appcompat,您可以使用AppCompatDelegate将AppCompat的支持扩展到任何Activity。
您可以查看AppCompatPreferenceActivity的官方链接,在这里您可以找到这种技术的示例。
通过使用从DarkActionBar派生的主题明确指出Setting Activity,我们可以添加回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>
这将在Android版本大于或等于21的设备中为您的设置活动添加操作栏。
这对我有用,
只需将PreferenceActivity更改为AppCompatActivity,并在manifest.xml文件中为该特定活动添加parentActivityName
。
AndroidManifest.xml中
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".HomeActivity"></activity>
settings act IV TY.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);
}
}