Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过线程在TextView中闪烁光标_Java_Android_Multithreading_Cursor - Fatal编程技术网

Java 通过线程在TextView中闪烁光标

Java 通过线程在TextView中闪烁光标,java,android,multithreading,cursor,Java,Android,Multithreading,Cursor,我想在文本视图中创建一个闪烁的光标。。到目前为止,我得到了这个: myTv = (TextView)findViewById(R.id.myTv); //blinking Cursors Thread class CursorThread extends Thread { public void run() { while (true) { my

我想在文本视图中创建一个闪烁的光标。。到目前为止,我得到了这个:

    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();
如果我运行这个应用程序,我会崩溃。我做错了什么? 我不知道很多关于线程的事情。。。 哦,这条线当然是我主要活动中的一个内部类


有人可以帮忙吗?

您正试图从另一个线程(不是主
UI
线程)修改视图。您可以使用
处理程序
CursorThread
修改
TextView
您必须使用如下所示的
runOnUI
方法从另一个线程访问UI线程

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

或者使用
handler.post(newrunnable…)

另一种选择:子类TextView并具有onDraw调用
postInvalidateDelayed()
,在数毫秒后使自身失效。在onDraw中跟踪两次调用之间的时间,并适当地闪烁光标