2016-05-21 10 views
0

Ich versuche die Hintergrundfarbe meiner App zu ändern, wenn der Benutzer die Suchleiste zieht.findViewById (R.id.screen) gibt null zurück

Ich habe folgende Link referierten: Set Background color programmatically

ich folgenden Code haben in OnSeekBarChangeListener():

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    View someView = findViewById(R.id.screen); 
    View root = someView.getRootView(); 
    root.setBackgroundColor(Color.argb(255, r[progress], g[progress], b[progress])); 
} 

Es ergibt sich folgende Absturz:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' on a null object reference 

Mainactivity Klasse:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setRandomcolors(); 
     setbuttonclicklistener(); 
     seebar(); 
    } 

OnSeekBarChangeListener() wird von seebar()

+0

ist Ihr Bildschirm im selben Layout? – KDeogharkar

+1

Sie haben keine Ansicht mit ID 'screen' –

+0

@KDeogharkar wie kann ich das wissen? –

Antwort

2

aufgerufen Sie erhalten someView als null. Also gibt es eine Nullzeiger-Ausnahme.

Versuchen Wechsel,

View someView = findViewById(R.id.screen); 

zu

View someView = (View)findViewById(R.id.screen); 

Können Sie Ihren vollständigen XML-Code schreiben.

+2

Ich denke, es ist wirklich egal, wenn er den Nullwert in "View" umwandelt? – whymatter

+0

könnte Folgendes verwenden: if (someView! = Null), aber möglicherweise benötigen Sie Folgendes: View daddy = (Anzeigen) (findViewById (R.id.screen)). GetParent(); – Flummox

Verwandte Themen