更改背景颜色时出错

时间:2016-12-27 06:43:43

标签: java android eclipse android-studio

制作一个应用程序,询问用户他们喜欢的颜色,然后将它们带到一个新的Activity,使用该颜色作为背景颜色,并说出一些不错的东西。 但我不知道为什么它再次崩溃和agian

继承人的代码

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);
        }
    });


}

}

AnotherActivity.java

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

}

}

4 个答案:

答案 0 :(得分:0)

我假设您将颜色名称传递为“黑色”,“蓝色”,“天蓝”以及其他颜色名称。

但希望您了解parseColor()方法支持的字符串参数值。

  

支持的格式为:#RRGGBB #AARRGGBB或以下之一   名称:'红色','蓝色','绿色','黑色','白色','灰色','青色',   'magenta','yellow','lightgray','darkgray','grey','lightgrey',   'darkgrey','aqua','fuchsia','lime','maroon','navy','olive',   '紫色','银色','青色'。

答案 1 :(得分:0)

更改1:

首先AnotherActivityOnCreate方法中添加以下代码。

final RelativeLayout mrelativelayout = (RelativeLayout) findViewById(R.id.activity_main);

因为它会为您提供NullPointerException

更改2:

而不是尝试这个

Editable name = medittext.getText();

使用这种方式

 String name = medittext.getText().toString();

并通过AnotherActivity将该字符串传递给Intent

答案 2 :(得分:0)

确保将intent放入intent时,将其转换为String。 目前,您只是将一个Editable对象而不是String对象传递给intent

示例:

intent.putExtra("name",name.toString());

或更好,更改名称类型

String name = medittext.getText().toString();

答案 3 :(得分:0)

请发布您的activity_main.xml和activity_another.xml。问题是没有带android的按钮:id =" @ + id / button"在您的activity_main.xml中,可能是在activity_another.xml中。