Java 从另一个类调用方法会使应用程序崩溃
我在MainActivity中有一个按钮,它打开一个带有5个按钮的弹出式活动。我希望这5个按钮改变我的MainActivity中另一个按钮(bSay3)的背景图像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
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请阅读意图以及如何将数据从一个活动传递到另一个活动。。你会自动知道我在说什么。至于你的一段代码,它永远不会起作用