2017-04-02 6 views
-2

So versuche ich, mit einem Drehfeld die Textfarbe einer Nachricht in einer Textansicht zu ändern. Wenn ich jedoch versuche, die an meine Schaltfläche angehängte Funktion zu verwenden, stürzt die Aktivität ab. bevor der ZugangÄndern der Textfarbe einer Textansicht mit einem Drehfeld

<TextView 
    android:textColor="#000000" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/message" /> 

<Spinner 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/colours" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="16dp" 
    android:id="@+id/spinner" /> 

<Button 
    android:text="HOME" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button" 
    android:onClick="home" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="52dp" /> 

<Button 
    android:text="changeColour" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button4" 
    android:layout_above="@+id/button" 
    android:layout_alignStart="@+id/button" 
    android:layout_marginBottom="101dp" 
    android:onClick="change" /> 
+0

initialisieren müssen 'ich den entsprechenden Teil des ... Jetzt angeschlossen haben' die logcat hinzufügen, Das ist das Wichtigste. –

+0

Wenn Sie den Spinner nicht initialisiert haben und ihn verwenden, wird eine NullPointerException ausgelöst. –

Antwort

2

Myspinner ist nicht initialisiert es ist Methode: Ich habe den relevanten Teil des Java-Code und die XML-Datei

import android.content.Intent; 
import android.graphics.Color; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class Colour extends AppCompatActivity { 

private Spinner mySpinner; 
public static final String EXTRA_MESSAGE = "message"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_colour); 
    Intent intent = getIntent(); 
    String messageText = intent.getStringExtra(EXTRA_MESSAGE); 
    TextView messageView = (TextView)findViewById(R.id.message); 
    messageView.setText(messageText); 
} 

public void change(View v){ 
    String text = mySpinner.getSelectedItem().toString(); 
    TextView newColour = (TextView) findViewById(R.id.message); 
    if(text == "Red"){ 
     newColour.setTextColor(Color.RED); 
    } 
    if(text == "Blue"){ 
     newColour.setTextColor(Color.BLUE); 
    } 
    if(text == "Green"){ 
     newColour.setTextColor(Color.GREEN); 
    } 
} 

XML-Datei angehängt. Bitte initialisiere mySpinner zuerst. verwenden folgenden Code

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mySpinner = (Spinner)findViewById(R.id.spinner); 

    } 

public void change(View v){ 
     String text = mySpinner.getSelectedItem().toString(); 
     TextView newColour = (TextView) findViewById(R.id.message); 
     if(text.equals("Red")){ 
      newColour.setTextColor(Color.RED); 
     } 
     if(text.equals("Blue")){ 
      newColour.setTextColor(Color.BLUE); 
     } 
     if(text.equals("Green")){ 
      newColour.setTextColor(Color.GREEN); 
     } 
    } 
+0

"private Spinner mySpinner;" Ich habe es aber initialisiert? – killiantos

+0

@killiantos, die deklariert. Die Initialisierung erfolgt wie folgt: 'mySpinner = new Spinner (context); oder wenn Sie von einem Layout' mySpinner = (Spinner) findViewById (R.id.myspinner); ' – Zoe

+0

@killiantos abrufen, überprüfen Sie bitte die aktualisierte Antwort – user7676575

0

es scheint, dass Sie nicht Setup den Spinner in der change Methode tat, so dass Sie es zuerst

Verwandte Themen