0

我有两个班级:a 和 b。在 ai 类中,当变量 x 的值小于 1000 时,它会将变量 x 加一。在 b 类(活动类)中,我有一个名为 ed 的 EditText。每次 x 在 a 类中加一时,我想将 ed 的文本从 b 类设置为 x。如何才能做到这一点?请参阅下面的代码。

public  Class a
    {
         int x = 0;
         private void startThread()
         {
           MyThread = new Thread(new Runnable() 
           {
             public void run() 
             {
              while(x<1000)
              {
               x++;
               //Change the text of ed from class b to x!!!!
               sleep(100);
              }
             }

           });
           MyThread.start();

         }

    }





Class b extends Activity{
 EditText ed;

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ed =(EditText)findViewById(....);
    }


}
4

3 回答 3

2

IMO,您应该使用观察者模式,其中类A观察者,类B主题

于 2013-09-03T10:47:20.137 回答
0

我不知道你的申请,但我有两个建议:

  • Class A(类名总是以大写字母开头),应保留对 的引用class B,例如private final B reference

  • 应该有另一个类提供对class B.

编辑

正如评论中所建议的,您应该使用MVC。它自然地解决了你的问题。

于 2013-09-03T10:46:22.197 回答
0
public  Class a
{
     int x = 0;
     private void startThread()
     {
       MyThread = new Thread(new Runnable() 
       {
         public void run() 
         {
          while(x<1000)
          {
           x++;
           b.notifyEdittext(x);
           sleep(100);
          }
         }

       });
       MyThread.start();

     }

}

Class b extends Activity{
EditText ed;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ed =(EditText)findViewById(....);
}

public static void notifyEdittext(int counter){
 if(ed!=null){
   ed.setText(ed.getText()+counter);
 }
}
}
于 2013-09-03T10:48:36.790 回答