我想知道在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 {}); 在错误的地方请给我这个帖子方法的观点,我应该怎样以及在哪里写这个帖子方法?为什么?
答案 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);
}