从Androidfunction更新Textview

有人可以告诉我如何从function更新控件Textview Android? 我已深入搜索互联网并看到许多人提出同样的问题,我测试了线程但无法工作,有人有一个简单的工作示例吗? 例如,调用一个函数(在循环中运行几次)并且函数在TextView中写入,但问题是在函数未完成运行之前,它会向我显示文本。

@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 { @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显示其更新的内容而不将控制权返回到runloop?” (即退出你的职能)。

如果是这样,我担心你运气不好,Android的UI模型无法做到这一点。 最接近这一点的可能是跟踪你的循环状态,并设置一个定时器,它将调用一个函数来更新TextView。

这是一个例子。 假设您要将文本“this is a test”放入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 

我认为我的一些对象可见性在这里是不正确的,并且我没有方便测试的Android环境,但是你得到了一般的想法。 而不是处理程序,你也可以使用计时器,但它更重要,所以它取决于你想要更新UI的频率。

您可以通过执行以下操作获得textview。

 TextView myTextView = (TextView)findViewById(R.id.textViewsId); 

然后,您可以使用这些function更改TextView。 例如,您可以使用以下代码设置文本。

 myTextView.setText("New text example"); 

您正在尝试执行的控件是否还有其他更新?