私はAndroidアプリを開発する方法を学ぼうとしています。私はYouTubeでのビデオチュートリアルに続き、単純なアプリケーション設定画面をアプリケーションに追加することで終了しました。戻るボタンを押したときにPreferenceScreenからApp Preferencesを保存する
ただし、携帯電話のナビゲーションバーで[戻る]ボタンを押すと、変更された設定は適用されません。
私はGoogleで検索しようとしましたが、私が見つけた解決策はありませんでした。提案された解決策で何が起こっているのかをまだ理解していないという事実も、この1つの問題を解決する上での私の難しさに貢献するかもしれません。
私がアプリケーションから期待する動作は、ナビゲーションバーの[戻る]ボタンを押すと、変更された設定が適用されるということです。
たとえば、暗い背景の設定は、チェックボックスで制御されます。現在の動作は次のとおりです。暗い背景の設定を確認します。ナビゲーションバーの[戻る]ボタンを押すと、設定は適用されません(MainActivityの環境設定を読み込むメソッドがあります)。バックボタンを押すと暗い背景が適用されます。
私が理解しているように、onBackPressed
を上書きすることはこのトリックを行うべきだと考えていますが、設定を正しく適用するためには何を実行するべきかわかりません。
私のPreferenceScreenのクラスとレイアウトは次のとおりです。 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