2017-04-02 73 views
-2

所以我試圖使用微調來改變文本視圖中消息的文本顏色。但是,當我嘗試使用附加到我的按鈕的功能時,請單擊該活動崩潰。我重視的Java代碼的相關部分和XML文件使用微調改變文本視圖的文本顏色

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文件:

<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

'我附上相關的部分...'現在添加logcat的,這是最相關的事情。 –

+0

未初始化Spinner並使用它將導致NullPointerException。 –

回答

2

mySpinner不訪問之前初始化它的方法。請先初始化mySpinner。使用下面的代碼

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

「私人Spinner mySpinner;」儘管我已經初步化了? – killiantos

+0

正在宣佈的@killiantos。初始化是這樣的:'mySpinner = new Spinner(context);'或者從佈局獲取'mySpinner =(Spinner)findViewById(R.id.myspinner);' – Zoe

+0

@kulousos請檢查更新的答案 – user7676575

0

似乎你在change方法沒有設置微調,所以你需要初始化第一