从功能更新Textview Android
问题描述:
有人可以告诉我如何从功能更新控件Textview Android?我深入网络搜索,看到很多人问同样的问题,我测试了线程,但无法工作,有人有一个简单的工作例子,这样做?例如调用一个函数(它在循环中运行多次),并且函数在TextView中写入,但问题是,直到函数未完成运行,它才会显示文本。从功能更新Textview Android
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
while(condition) //here freezes the UI and the text in textview only shows when the loop ends
{
HardWork();
}
}
public void HardWork() {
txtProgreso.append("Test Line" + "\n\n");
};
在此先感谢。
答
如果我理解这里你正确
使用的AsyncTask,所以你可以在onProgressUpdate方法更新的TextView
private class SomeTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
while(condition) {
//do more
publishProgress("Some text value to you textview");
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
txtProgreso.append(values[0]);
}
}
答
通过执行以下操作获取textview。
TextView myTextView = (TextView)findViewById(R.id.textViewsId);
然后,您可以使用函数更改TextView。例如,您可以使用以下代码设置文本。
myTextView.setText("New text example");
是否有任何其他更新您正在尝试执行的控件?
答
我想你想问的是“如何强制我的TextView显示其更新的内容,而不会将控制权返回给runloop?” (即退出你的功能)。
如果是这样,恐怕你运气不好,这样的事情是不可能与Android的UI模型。最接近这一点的是可以跟踪你的循环状态,并设置一个计时器来调用一个函数来更新TextView。
下面是一个例子。假设你希望把文本“这是测试”到一个TextView,每次一个字符:
private Handler mHandler = new Handler(); private String desiredText = new String("This is a test"); private Runnable mUpdateTextView = new Runnable() { public void run() { TextView textView = (TextView)findViewById(R.id.myTextView); int lengthSoFar = textView.getText().length(); if (lengthSoFar < desiredText.length()) { mTextView.setText(desiredText.substring(0, lengthSoFar + 1)); mHandler.postDelayed(100, mUpdateTextView); } } }; protected void onStart() { mHandler.postDelayed(100, mUpdateTextView); }
我想我的一些对象的可视化是不正确这里,我没有一个Android环境方便测试,但您可以了解一般想法。你可以使用定时器,而不是一个处理程序,但它有点重量级,所以它取决于你想要更新UI的频率。
你可以发布你尝试一些代码?我不确定我是否明白你想要做什么。 – 2010-11-26 01:52:34
好吧,我编辑了帖子,并添加了代码示例... – seba123neo 2010-11-26 02:52:48
@ seba123neo请参考此链接http://*.com/questions/6898371/update-textview-in-oncreate-android我也面临同样的问题你能帮我请...并提供给我很好的解决方案...谢谢 – SRam 2011-08-02 05:23:29