从另一个类调用方法会崩溃App

时间:2017-04-04 18:00:04

标签: java android class button methods

我的MainActivity中有一个按钮,它打开一个带有5个按钮的PopupActivity。我希望这5个按钮从我的MainActivity中的另一个按钮(bSay3)更改背景图像。

但出于某种原因,当我点击这5个按钮之一时,我的应用程序崩溃了。

这是我的MainActivity代码:

public void changeColors(View v) {
    startActivity(new Intent(MainActivity.this,PopupActivity.class));}


public void ChangeColor() {
    Button bSay3 = (Button) findViewById(R.id.bSay3);
    if (Farbe == "Purple") {
        bSay3.setBackgroundResource(R.drawable.purple_3button);}
    if (Farbe == "Blue") {
        bSay3.setBackgroundResource(R.drawable.blue_3button);}
    if (Farbe == "Green") {
        bSay3.setBackgroundResource(R.drawable.green_3button);}
    if (Farbe == "Orange") {
        bSay3.setBackgroundResource(R.drawable.orange_3button);}
    if (Farbe == "Red") {
        bSay3.setBackgroundResource(R.drawable.red_3button);}
}

和我的PopupActivity:

public static String Farbe;

MainActivity ma = new MainActivity();

public void ColorPurple(View v){
    Farbe = ("Purple");
    ma.ChangeColor();
}
public void ColorBlue(View v){
    Farbe = ("Blue");
    ma.ChangeColor();
}
public void ColorGreen(View v){
    Farbe = ("Green");
    ma.ChangeColor();
}
public void ColorOrange(View v){
    Farbe = ("Orange");
    ma.ChangeColor();
}
public void ColorRed(View v){
    Farbe = ("Red");
    ma.ChangeColor();
}

stack trace

1 个答案:

答案 0 :(得分:0)

您的逻辑不正确。下面的代码没有考虑MainActivity的实例,它基本上创建了MainActivity的另一个对象。

public static String Farbe;

MainActivity ma = new MainActivity();

public void ColorPurple(View v){
    Farbe = ("Purple");
    ma.ChangeColor();
}
public void ColorBlue(View v){
    Farbe = ("Blue");
    ma.ChangeColor();
}
public void ColorGreen(View v){
    Farbe = ("Green");
    ma.ChangeColor();
}
public void ColorOrange(View v){
    Farbe = ("Orange");
    ma.ChangeColor();
}
public void ColorRed(View v){
    Farbe = ("Red");
    ma.ChangeColor();
}

为了改变背景,通过如下所述的结果

Intent i = new Intent(MainActivity.this,PopupActivity.class);
i.putExtra("bg_color","what ever color you want");
startActivity(i);

并在onCreate()中的PopUpActivity中执行以下操作

String bg_color = getIntent().getExtra("bg_color");

现在可以使用bg_color变量更改背景颜色。