Я создал приложение/экран настроек для своего приложения, используя руководство this. Пример кода ниже. Что мне не хватает, чтобы добавить панель инструментов к этому новому действию с помощью стрелки назад в левой части?Панель инструментов на странице настроек, построенной с помощью PreferenceFragment
AndroidManifest.xml
....
<activity
android:name=".SettingsActivity"
android:label="Settings"
android:launchMode="singleTask"
android:theme="@style/AppTheme.NoActionBar"/>
....
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:summary="@string/pref_sync_summ"
android:defaultValue="true" />
<ListPreference
android:dependency="pref_sync"
android:key="pref_syncConnectionType"
android:title="@string/pref_syncConnectionType"
android:dialogTitle="@string/pref_syncConnectionType"
android:entries="@array/pref_syncConnectionTypes_entries"
android:entryValues="@array/pref_syncConnectionTypes_values"
android:defaultValue="@string/pref_syncConnectionTypes_default" />
</PreferenceScreen>
SettingsFragment.java
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
...
}
SettingsActivity.java
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}
Что-то не так с панелью инструментов. Я получаю исключение NullPointerException в getSupportActionBar(). SetHomeButtonEnabled (true); – adriennoir
«activity_main.xml» Я предполагаю, что вы имеете в виду отдельный xml для параметра SettingsActivity, а не MainActivity xml. Я назову его «settings_main.xml». Не установленоContentView (R.layout.settings_main) также необходимо? Я добавил. Я попытался заменить панель инструментов Toolbar = (панель инструментов) findViewById (R.id.toolbar) с панелью инструментов Toolbar = (панель инструментов) findViewById (R.id.app_bar) и панель инструментов, но она перекрывает содержимое настроек. Я имею в виду, текст и стрелки «Настройки» находятся над первым текстом PreferenceCategory, а цветной прямоугольник на панели инструментов невидим. – adriennoir
@AdrienNoir Код в моем сообщении предназначен только для общей активности + панели инструментов + фрагмент, чтобы дать вам пример того, как он может выглядеть. Вам придется адаптировать его к вашим потребностям, но важными битами являются 1.Задайте родительский элемент в манифесте 2. зайдите в панель инструментов YourActivity.onCreate() и установите ее так, чтобы она показывала стрелку. Эта стрелка возвращает вас к любому родителю, указанному вами на панели инструментов. Без меня, глядя на ваше приложение, вам сложно дать больше советов ... – Micro