2017-01-18 8 views
1

DayNightテーマをアプリケーションに実装し、昼と夜のモードを切り替える設定を追加しましたが、再起動せずにモードを動的に切り替えることはできません。DayNightテーマのモードを動的に切り替えることはできません

設定を変更した後にsetDefaultNightMode()を使用した場合、設定アクティビティはモードを変更しませんが、バックスタックのアクティビティは変更されます。 setLocalNightMode()をさらに使用すると、設定アクティビティが再作成され、モードが変更されますが、バックスタックのアクティビティは反映されません。私は両方を達成する方法を見つけることができませんでした。これを行う方法はありますか?ここ

答えて

1

hereに位置CheeseSquareレポのMainActivity.javaモジュールに実装され:ここ

private void setNightMode(@AppCompatDelegate.NightMode int nightMode) { 
    AppCompatDelegate.setDefaultNightMode(nightMode); 

    if (Build.VERSION.SDK_INT >= 11) { 
     recreate(); 
    } 
} 

は、再作成の説明(ある)V25のように。私はこの呼び出しのための他の文書を見つけることができないようです - V11で追加されたことに注意してください。

/* Cause this Activity to be recreated with a new instance. This results 
* in essentially the same flow as when the Activity is created due to 
* a configuration change -- the current instance will go through its 
* lifecycle to {@link #onDestroy} and a new instance then created after it. 
*/ 
+0

あなたはMainActivityでこれを行う場合、それは動作しますが、あなたはbackstackでMainActivityを持つ別の活動でこれを行う場合には問題が残ります。 – Sarah

+0

私にとっては、マニフェストファイルの履歴をオフにしてバックスタックを「切る」ことができます。ここに記載されているように、あなたの活動に 'android:noHistory =" true "を追加してください:https://stackoverflow.com/questions/5794506/android-clear-the-backstack/6512788#6512788 –

関連する問題