Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个类调用方法会使应用程序崩溃_Java_Android_Class_Button_Methods - Fatal编程技术网

Java 从另一个类调用方法会使应用程序崩溃

Java 从另一个类调用方法会使应用程序崩溃,java,android,class,button,methods,Java,Android,Class,Button,Methods,我在MainActivity中有一个按钮,它打开一个带有5个按钮的弹出式活动。我希望这5个按钮改变我的MainActivity中另一个按钮(bSay3)的背景图像 public static String Farbe; MainActivity ma = new MainActivity(); public void ColorPurple(View v){ Farbe = ("Purple"); ma.ChangeColor(); } public void ColorBl

我在MainActivity中有一个按钮,它打开一个带有5个按钮的弹出式活动。我希望这5个按钮改变我的MainActivity中另一个按钮(bSay3)的背景图像

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();
}
但由于某种原因,当我点击这5个按钮中的一个时,我的应用程序崩溃了

这是我的主要活动代码:

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);}
}
还有我的弹出式活动:

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

您的逻辑不正确。下面的代码没有考虑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变量,您现在可以更改背景颜色。

堆栈跟踪在哪里?我认为这是一个有用的阅读:刚刚添加了我的堆栈跟踪。抱歉,但我无法理解您的意思:DDude请阅读意图以及如何将数据从一个活动传递到另一个活动。。你会自动知道我在说什么。至于你的一段代码,它永远不会起作用