从线程访问主活动中的变量

时间:2014-11-25 12:12:50

标签: java android multithreading

我有以下代码:

 public class MainActivity extends Activity {
     public String myString;

     ...

     public void updateString()
     {
         new Thread() {
            @Override
            public void run() {
                 this.myString = "TEST";
            }
         }
     }

}

问题是我需要从线程更新myString,但我无法访问它。有什么建议?谢谢!

3 个答案:

答案 0 :(得分:1)

你可以通过这种方式使字符串全局并更新它。

public class MainActivity extends Activity {
     public String myString;

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        updateString();
     }

     public void updateString()
     {
         new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                for(int i=0; i<10;i++){

                    myString=String.valueOf(i);

                    //log
                    Log.d("myString:",myString);
                }

            }
        }).start();

     }

答案 1 :(得分:0)

在这种情况下,创建一个自定义类,它将实现Runnable并将myString作为参数传递给类的构造函数,因此当创建runnable对象时,它将存储在本地,可以在需要时从run方法中加入。< / p>

答案 2 :(得分:0)

您可以使用getter和setter,例如:

公共类MainActivity扩展Activity {      public String myString;

 ...

 public void updateString()
 {
     new Thread() {
        @Override
        public void run() {
             setMyString("TEST");
        }
     }
 }

 public void setMyString(String myString){
     this.myString = myString;
 }

}