如何在其他类中使用textview(MyThread扩展Thread)

时间:2014-07-31 15:51:02

标签: android post methods

我想知道在Thread类中使用post方法。

我的程序即将从基本工资中找到固定工资。基本上在这个程序中,我有一个editText,用户必须输入基本工资,当点击按钮时显示'显示'有一个计数器在屏幕上显示1,2,3,... 10在textview中。然后固定工资将显示在其他editText.So,这关于我的程序

现在,在代码中我已经创建了一个名为Mythread的类用于计数器目的。其中我已经把循环计数为1,2,... 10.但我的问题是我要刷新的值textView所以我想使用post方法,但如何在我的代码中使用我不知道的。

请指导我

package com.example.bs_to_fs_thread;

import android.widget.TextView;

public class MyThread extends Thread{

TextView _tv;
String fs;

public MyThread(TextView tv,String sfs){

    _tv=tv;
    fs=sfs;

}


public void run()
{
    int i=0;    
    while(i<10)
    {

    _tv.post(new Runnable()
    {
        public void run()
        {

                _tv.setText(i);
                i++;
                try {
                    Thread.sleep(1000);
                    } catch (InterruptedException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

            }
        }
    });
    MainActivity.printFS(fs);


}       

}

` 在这段代码中,可能是我写的_tv.post(Runnable {}); 在错误的地方请给我这个帖子方法的观点,我应该怎样以及在哪里写这个帖子方法?为什么?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情(我没有测试过它现在没有编辑器):

public MyThread(TextView tv,String sfs,Activity a){
this._tv=tv;
this.fs=sfs;
this.a= a;//this is required to use method runOnUiThread as background thread cannot modify Ui thread
}

然后,在您想要修改UI的地方,比如更改文本,请执行以下操作:

a.runOnUiThread(new Runnable() {
        public void run()
        {
            Toast.makeText(a, "show some toast", Toast.LENGTH_SHORT).show();
            _tv.setText("mytext");
        }
    });

答案 1 :(得分:0)

试试这个:

public void run() {
    int i = 0;    
    while(i < 10) {

        // We can't use 'i' directly inside the runnable declaration, because all
        // external variables must be declared as final
        final int number = i;

        // Posting this runnable to the UI thread
        _tv.post(new Runnable() {
            public void run() {
                _tv.setText(number);
            }
        }

        // Sleeping current thread (NOT UI thread) for 1 second
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // Increment 'i'
        i++;
    }
    MainActivity.printFS(fs);
}