How to update a TextView in an activity constantly in an infinite loop?

巧了我就是萌 提交于 2019-12-19 02:47:53

问题


I have an activity which has a TextView, and I want to update the text constantly..

In Java I could just make an infinite while loop, and just set the text each iteration.

But when I try to do that in Android, it shows a black screen, and doesn't even load the activity.

I put the infinite in the onCreate method, perhaps that's why it crashes..but if it is, where should I put it?


回答1:


use Handler and a separate thread/runnable for updating TextView constantly instead of While loop :

Handler handler=new Handler();
handler.post(new Runnable(){ 
    @Override
    public void run() {
        // upadte textView here
        handler.postDelayed(this,500); // set time here to refresh textView
    }
});



回答2:


Minimal working example based on https://stackoverflow.com/a/14295193/895245 :

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class Main extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final int i = 0;
        final TextView textView = new TextView(this);
        textView.setText(String.format("%d", i));
        setContentView(textView);
        final Handler handler = new Handler();
        class MyRunnable implements Runnable {
            private Handler handler;
            private int i;
            private TextView textView;
            public MyRunnable(Handler handler, int i, TextView textView) {
                this.handler = handler;
                this.i = i;
                this.textView = textView;
            }
            @Override
            public void run() {
                this.handler.postDelayed(this, 500);
                this.i++;
                this.textView.setText(String.format("%d", i));
            }
        }
        handler.post(new MyRunnable(handler, i, textView));
    }
}

You can just copy paste this into the main activity generated by android create project [...], and you will see a counter on your app.

Tested on Android 22.



来源:https://stackoverflow.com/questions/14295150/how-to-update-a-textview-in-an-activity-constantly-in-an-infinite-loop

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!