Java 获取更改背景颜色时的错误
制作一个应用程序,向用户询问他们最喜欢的颜色,然后带他们去一个新的活动,该活动使用该颜色作为背景色,并对他们说些好话。 但我不知道为什么它又一次地崩溃了 这是密码 MainActivity.javaJava 获取更改背景颜色时的错误,java,android,eclipse,android-studio,Java,Android,Eclipse,Android Studio,制作一个应用程序,向用户询问他们最喜欢的颜色,然后带他们去一个新的活动,该活动使用该颜色作为背景色,并对他们说些好话。 但我不知道为什么它又一次地崩溃了 这是密码 MainActivity.java private TextView mtextview; private EditText medittext; private Button mbutton; @Override protected void onCreate(Bundle savedInstanceState) { su
private TextView mtextview;
private EditText medittext;
private Button mbutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mtextview = (TextView) findViewById(R.id.textView);
medittext=(EditText)findViewById(R.id.editText);
mbutton=(Button)findViewById(R.id.button);
mbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name =medittext.getText().toString();
startStory(name);
}
private void startStory(String name) {
Intent intent = new Intent(MainActivity.this,AnotherActivity.class);
intent.putExtra("name",name);
startActivity(intent);
}
});
}
public class AnotherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
final RelativeLayout mrelativelayout = (RelativeLayout) findViewById(R.id.activity_main);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
mrelativelayout.setBackgroundColor(Color.parseColor(name));
}
}
AnotherActivity.java
private TextView mtextview;
private EditText medittext;
private Button mbutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mtextview = (TextView) findViewById(R.id.textView);
medittext=(EditText)findViewById(R.id.editText);
mbutton=(Button)findViewById(R.id.button);
mbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name =medittext.getText().toString();
startStory(name);
}
private void startStory(String name) {
Intent intent = new Intent(MainActivity.this,AnotherActivity.class);
intent.putExtra("name",name);
startActivity(intent);
}
});
}
public class AnotherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
final RelativeLayout mrelativelayout = (RelativeLayout) findViewById(R.id.activity_main);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
mrelativelayout.setBackgroundColor(Color.parseColor(name));
}
}我假设您传递的颜色名称为“黑色”、“蓝色”、“天蓝色”以及其他颜色名称 但希望您了解该方法支持的字符串参数值 支持的格式为:#RRGGBB#AARRGGBB或以下格式之一 名称:“红色”、“蓝色”、“绿色”、“黑色”、“白色”、“灰色”、“青色”, ‘洋红’、‘黄色’、‘浅灰色’、‘暗灰色’、‘灰色’、‘浅灰色’, “黑色”、“水绿”、“紫红色”、“青柠色”、“栗色”、“海军蓝”、“橄榄色”, “紫色”、“银色”、“青色” 更改1: 首先,
OnCreate
方法中添加以下代码
final RelativeLayout mrrelativelayout=(RelativeLayout)findViewById(R.id.activity_main)
因为它会给您NullPointerException
改变2:
而不是尝试这个
Editable name = medittext.getText();
这样
String name = medittext.getText().toString();
并通过
Intent
将该字符串传递给另一个活动,确保在Intent中输入额外内容时将其转换为字符串。
当前,您只是将一个可编辑对象而不是字符串对象传递给intent
例如:
intent.putExtra("name",name.toString());
或者更好,更改名称的类型
String name = medittext.getText().toString();
请发布您的activity_main.xml和activity_other.xml。问题是您的activity_main.xml中没有带有android:id=“@+id/button”的按钮,可能是activity_other.xml中的按钮。检查logcat输出并共享崩溃详细信息。请共享异常,您正在传递什么颜色名称?请共享崩溃日志。另外,您是否在颜色名称字段中使用html颜色代码?一个潜在问题可能是-您正在意向中存储可编辑引用“名称”,但在检索时,您正在调用意向引用上的getStringExtra(“名称”)方法。过程:com.example.vishal.newnew,PID:12550 java.lang.RuntimeException:无法启动活动组件信息{com.example.vishal.newnew/com.example.vishal.newnew.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.Button.setOnClickListener'(android.view.view$OnClickListener)“”在空对象上reference@VishalThadari检查您提供的xml按钮
id是否与您使用的名称相同。