Я пытаюсь научиться разрабатывать приложения для Android. Я последовал видеоуроку на YouTube, и это закончилось тем, что добавило в приложение простой экран настроек приложения.Сохранить настройки приложения с экрана предпочтений при нажатии кнопки возврата
Однако есть одна проблема, которая меня беспокоит: когда я нажимаю кнопку «Назад» на навигационной панели телефона, измененные настройки не применяются.
Я пробовал поиск в Google, но ни одно из решений, которые я нашел, не сработало. Тот факт, что я еще не понял, что 100% того, что происходит на предлагаемых решениях, также может повлиять на мои трудности при решении этой проблемы.
Поведение, которое я ожидаю от приложения, заключается в том, что, когда я нажимаю кнопку «Назад» на панели навигации, следует применять измененные настройки.
Например, у меня есть настройка темного фона, который управляется флажком. Текущее поведение: я проверяю настройку темного фона. Когда я нажимаю кнопку «Назад» на панели навигации, параметр не применяется (у меня есть метод, который загружает настройки в моей MainActivity). Я хочу, чтобы это произошло, когда я нажимаю кнопку «Назад», в этом случае применяется темный фон.
Из чего я понимаю, я считаю, что переопределение onBackPressed
должно сделать трюк, но я не знаю, что должно быть выполнено, чтобы правильно применить настройки.
Вот класс и расположение моего экрана предпочтений. Что касается строк в XML, они на самом деле не жестко закодированы. Я просто скопировал английские значения здесь, чтобы показать текст, который должен появиться на интерфейсе.
public class AppPreferences extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_detail);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SettingsFragment settingsFragment = new SettingsFragment();
fragmentTransaction.add(android.R.id.content, settingsFragment, "SETTINGS_FRAGMENT");
fragmentTransaction.commit();
}
public static class SettingsFragment extends PreferenceFragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.app_preferences);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="General">
<EditTextPreference
android:title="Notebook"
android:summary="The title that will be used on the main action bar."
android:key="title"
android:defaultValue="Notebook" />
</PreferenceCategory>
<PreferenceCategory
android:title="Color">
<CheckBoxPreference
android:title="Dark Background"
android:summary="Is the main background color dark?"
android:key="background_color"
android:defaultValue="false" />
</PreferenceCategory>
</PreferenceScreen>
Добро пожаловать в StackOverflow. Пожалуйста, ознакомьтесь с инструкциями о том, как спросить: http://stackoverflow.com/help/how-to-ask. Вы должны указать в своем описании, какое поведение ожидается. Кроме того, более релевантный фрагмент кода, так как это точно не дает достаточного контекста того, что вы пытаетесь сделать. – Chisko
Добавлено несколько слов на вопрос – tady159