Добавить панель действий с кнопкой «Назад» в режиме предпочтения

Вот моя предпочтительная деятельность:

package com.example.hms.test; import android.os.Bundle; import android.preference.PreferenceActivity; public class PrefsActivity extends PreferenceActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } } 

Здесь я хочу показать панель действий с настройками имени и кнопкой возврата на главную

Вы должны сделать пару вещей:

  1. Добавьте в свой onCreate of PreferenceActive следующее:

     getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
  2. Override onOptionsItemSelected in PreferenceActivity:

     @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } 
  3. Измените <activity> в манифесте, чтобы ваша функция PreferenceActivity выглядела примерно так:

     <activity android:name=".PrefsActivity" android:label="@string/title_activity_settings" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.android.MainActivity" /> </activity> 
  4. Наконец, установите android: launchMode = "singleTop" в свой тег MainActivity <activity> в манифесте:

     <activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTop" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

Ответ, который дал Pooya, не будет работать для PreferenceActivity. Вместо этого ваш класс расширяет AppCompatActivity и использует PreferenceFragment для загрузки предпочтений. Вот мой код для настроек:

 public class MyPrefsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onSupportNavigateUp(){ finish(); return true; } public static class MyPreferenceFragment extends PreferenceFragment { @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } } 

Поместите эту активность в ваш AndroidManifest.XML:

 <activity android:name=".MyPrefsActivity" android:label="Preferences" android:theme="@style/AppTheme"/> 

И теперь вы можете начать работу с настройками, используя намерение в моей основной деятельности (или независимо от того, какая у вас родительская активность), как обычно:

 Intent prefsIntent = new Intent(activity, MyPrefsActivity.class); activity.startActivity(prefsIntent);