通过Thread在TextView中闪烁光标

时间:2012-03-07 12:39:07

标签: java android multithreading cursor

我想在TextView中创建一个闪烁的光标..到目前为止我得到了这个:

    myTv = (TextView)findViewById(R.id.myTv);


    //blinking Cursors Thread
    class CursorThread extends Thread 
    {
        public void run()
        {
            while (true) 
            {
                myTv.setText("|");

                try 
                {
                    sleep(1000);
                } 
                catch (InterruptedException e) 
                {}

                myTv.setText(" ");

                try 
                {
                    sleep(1000);
                } 
                catch (InterruptedException e) 
                {}
            }  
        }
    }
    CursorThread cThread = new CursorThread();
    cThread.start();

如果我运行此应用程序,我会崩溃。我做错了什么? 我不知道很多关于线程的事情...... 哦,这个Thread当然是我的MainActivity的内部类。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:5)

您必须使用runOnUI方法从另一个线程访问UI线程,如此处所示

runOnUiThread(new Runnable() {
    public void run() {
        keresetTv.setText(" ");
    }
});

或使用handler.post(new Runnable...);

答案 1 :(得分:3)

替代方法:继承TextView并使其onDraw调用postInvalidateDelayed(),在几毫秒后实现自身的无效。跟踪onDraw中的调用之间的时间,并适当地闪烁光标。

答案 2 :(得分:2)

您正在尝试从另一个线程(不是主UI线程)修改视图。您可以使用HandlerTextView修改CursorThread