Ich versuche, 2 Themenoptionen für meine App, Dark und Light. Wenn das dunkle Thema ausgewählt ist, verwende ich sharedreference, um das Thema beim Start zu speichern und anzuwenden. Aber wenn ich versuche, die Hintergrundfarbe der Symbolleiste & appBarLayout wie folgt zu ändern:Ändern der Toolbar & AppBarLayout Hintergrund onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
long currentTheme = sharedPref.getInt(getString(string.current_theme), 0);
if (currentTheme == 0) {
this.setTheme(R.style.AppTheme_NoActionBar);
}
if (currentTheme == 1) {
this.setTheme(R.style.AppTheme_NoActionBar_Dark);
Toolbar toolbar = (Toolbar) findViewById(id.toolbar);
setSupportActionBar(toolbar);
toolbar.setBackgroundColor(getResources().getColor(ActionbarDark));
}
Logcat gibt den Fehler: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setBackgroundColor(int)' on a null object reference
Und ich kann nicht verstehen, warum
Update: es wird behoben durch die Verwendung von Antwort von @Nilesh Rathod und Ändern des Themas der Aktivität vor dem Einstellen der Inhaltsansicht, dann nach dem Festlegen der Inhaltsansicht Ändern des Themas der Symbolleiste und AppBarLayout.
Toolbar Symbolleiste = (Toolbar) findViewById unten mögen sollte (R.id.toolbar); Du hast R hier verpasst. –