Java 获取更改背景颜色时的错误

Java 获取更改背景颜色时的错误,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

制作一个应用程序,向用户询问他们最喜欢的颜色,然后带他们去一个新的活动,该活动使用该颜色作为背景色,并对他们说些好话。 但我不知道为什么它又一次地崩溃了

这是密码

MainActivity.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));

}
}

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是否与您使用的名称相同。