Java 使用微调器更改文本视图的文本颜色
因此,我尝试使用微调器在文本视图中更改消息的文本颜色。但是,当我尝试使用按钮附带的功能时,单击“活动”会崩溃。我已经附上了java代码和xml文件的相关部分Java 使用微调器更改文本视图的文本颜色,java,android,nullpointerexception,Java,Android,Nullpointerexception,因此,我尝试使用微调器在文本视图中更改消息的文本颜色。但是,当我尝试使用按钮附带的功能时,单击“活动”会崩溃。我已经附上了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 a
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" />
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);
}
}
似乎您没有在
change
方法中设置微调器,因此您需要首先初始化它我已附加了…
的相关部分,现在添加最相关的日志。没有初始化微调器并使用它将导致NullPointerException。“private spinner mySpinner;”“我已经初始化了吗?”killiantos说。初始化如下:mySpinner=newspinner(上下文)代码>或从布局获取时mySpinner=(微调器)findViewById(R.id.mySpinner)代码>@killiantos请检查更新的答案