0

单击 button1 后,将调用另一个布局和另一个类。现在我想将 textView 的文本从类 2 中更改出来,这会导致应用程序崩溃并出现 java.lang.NullPointerException

第 1 类的重要部分

public static TextView A;
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

[第 1 类中的按钮内容]

 setContentView(R.layout.raten);
                      final    TextView A = (TextView) findViewById(R.id.A); //the textview I wanna chage
                 max = 10;
                      Easy easy = new Easy(); // the other class
                      easy.e();

[现在应该更改文本的 1 类中的方法]

    public static void Tx(int i)
    {
 A.setText("adsfasdf");
    }

[第 2 类(“简单”)的重要部分]

public void e(){
        System.out.println("called class easy");

    int max = MainActivity.max;
    System.out.println(max);
    for (int i= 0; i<max; i++){
        System.out.println("runde"+i);
 MainActivity.Tx(i);

    }

我知道,有些人已经问过这样的问题,但我没有找到可行的解决方案。我已经明白,您无法访问 UI 线程之外的 UI 内容,并且出现 nullpointerexception,因为他使用“空”public static TextView A;而不是final TextView A = (TextView) findViewById(R.id.A).

但是我怎样才能使它对其他方法可见呢?

抱歉,如果帖子看起来很乱,但我不知道如何更好地解释我的情况

4

2 回答 2

1

而不是定义一个新的局部变量A,只需分配给静态变量。

改变

final    TextView A = (TextView) findViewById(R.id.A); //the textview I wanna chage

A = (TextView) findViewById(R.id.A); //the textview I wanna chage
于 2013-05-08T13:15:33.317 回答
0

static从两者中删除,A并且Tx (当然,您MainActivity必须在调用时创建easy.e()

于 2013-05-08T13:17:16.107 回答