我的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();
}
答案 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变量更改背景颜色。