你好,我想使用一个变量并捕获另一个内部作用域中的一些数据,并将其用于主作用域中的其他位置,但我的问题是当我在内部作用域中设置变量时,它将被忘记超出范围。
public class ...{
static TextView txt1;
static String i="Z0";
static Handler UIupdater = new Handler() {
@Override
public void handleMessage(Message msg) {
//some data
i ="Z1";
}
};
txt1 = (TextView) findViewById(R.id.txt1);
txt1.setText(i+"");//still get "Z0"
}
我想查看“Z1”,但它显示“Z0”。 解决办法是什么?
最佳答案
问题是 txt1.setText(i+"");
行在加载类时运行,而 i ="Z1";
行在处理程序实际收到消息之前不会运行 - 为时已晚,无法影响 txt1
。
解决方案是将 i = "Z1"
移动或复制到之前运行的程序的一部分,或者移动或复制 txt1.setText(i+"") ;
到稍后运行的程序的一部分。例如:
public void handleMessage(Message msg) {
i = "Z1";
txt1.setText(i);
}
关于java - 在java中使用超出范围的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727731/