preferenceで設定画面を作成し、
プッシュ通知が届く or 届かない ですとか
ツールバーの色をいくつか変える
などが一応できるのですが、出来るタイミングが大多数のアプリさんより一歩だけ遅くて困っています・・。
●バーの色変更などが変更されるタイミング 例:赤に変えてみる
preference設定画面で色を赤に選択する
↓
メインアクティビティなどに遷移してツールバーを見てみる ⇦ここで変わっていない!(普通はこの時点で変わっていると思われる)
↓
アプリ閉じる
↓
再起動 ⇦ここでやっと赤に変わっている
●プッシュ通知が来るタイミング (今はONで通知が来ている状態)
preference設定画面で通知OFFにする。
↓
アプリを閉じる
↓
1回目、ここで通知を送ってもまだプッシュ通知は来てしまう! (本来ここで来ないはず)
↓
アプリ起動
↓
アプリ終了
↓
2回目、ここで通知を送るとプッシュ通知はもう来ない
と、反映が一歩遅いと思われる・・。なんらか自分のまずい設定があるのか、など思ったりもしますが・・・。
しかし、ちゃんと希望の色に変わったり、通知のON OFF は
この遅いタイミングを除けば正しくできています。
なので、全くダメなプログラムという訳ではないと思うのですが、
ワンテンポ遅いのはやはり修正をしたいです・・。
グローバル変数としてpreferencefragmentのものは使えるということで、
preferencefragmentで特に細かいコードなどは書いて無いのですが、
なぜこうなるのか、そして、
通常のように遅れないタイミングで通知など来て欲しいです・・・・
PreferenceFragment.java ↓
java
1public class PreferenceFragment extends PreferenceFragmentCompat { 2 3 4 @Override 5 public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 6 setPreferencesFromResource(R.xml.root_preferences, rootKey); 7 } 8 9 10 11 @Override 12 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 13 View view = super.onCreateView(inflater, container, savedInstanceState); 14 view.setBackgroundColor(getResources().getColor(android.R.color.background_light)); 15 16 17 Preference button = findPreference(getString(R.string.myCoolButton)); 18 button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 19 20 @Override 21 public boolean onPreferenceClick(Preference preference) { 22 23 return true; 24 } 25 }); 26 27 return view; 28 29 } 30 31} 32
root_preferences.xml ↓
xml
1<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 4 5 > 6 <PreferenceCategory> 7 <CheckBoxPreference 8 android:key="checkbox_02_key" 9 10 app:useSimpleSummaryProvider="true" 11 app:defaultValue="true" 12 android:title="@string/checkbox_02_title" 13 android:summaryOff="@null" 14 android:summaryOn="@null" /> 15 16 </PreferenceCategory> 17 18</PreferenceScreen>
↓MainActivityの protected void onCreate(Bundle savedInstanceState) { の内部
java
1 SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this); 2 boolean val2 = preference.getBoolean("checkbox_02_key", true); 3 4 if (val2 == true) { 5 FirebaseMessaging.getInstance().subscribeToTopic("test"); 6 } else { 7 FirebaseMessaging.getInstance().unsubscribeFromTopic("test"); 8 }
あえてワンテンポ遅く通知がいく、色が変わる、などしているつもりは無いので、
つまり値が取れないということはなく、一応は取れていると言いたいです。
ただ反映が遅いという・・
何か自分が見落としていると思うのですが、なんとか、ご指導いただきたいと思います、すみませんがよろしくお願い致します。
あなたの回答
tips
プレビュー