【问题标题】:Calling a method from another class crashes the App从另一个类调用方法会使应用程序崩溃
【发布时间】:2017-08-30 01:51:54
【问题描述】:

我的 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

【问题讨论】:

标签: java android class button methods


【解决方案1】:

你的逻辑不正确。下面这段代码没有考虑到 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_c​​olor 变量更改背景颜色。

【讨论】:

  • 对不起,我不能关注你 :D
  • 老兄,请阅读 Intent 以及如何将数据从一个活动传递到另一个活动。你会自动知道我在说什么。至于你的一段代码,它永远不会工作
猜你喜欢
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多