在java中使用变量超出范围

时间:2013-12-22 08:53:23

标签: java scope handler

你好我想使用一个变量并在另一个内部范围内捕获一些数据并将其用于主范围内的其他位置,但我的问题是当我在内部范围内设置我的变量时,它将被遗忘在范围之外。

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”。 解决方案是什么?

2 个答案:

答案 0 :(得分:1)

问题是在加载类时运行了行txt1.setText(i+"");,而在处理程序实际收到消息之前行i ="Z1";没有运行 - 来不及影响{{1} }。

解决方案是将txt1移动或复制到之前运行的程序的一部分,或者将i = "Z1"移动或复制到稍后运行的程序的一部分。例如:

txt1.setText(i+"");

答案 1 :(得分:0)

试试这个


        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"

          }
       };

}