Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Android 无法从可运行转换为线程_Android_Multithreading_Textview_Delay_Runnable - Fatal编程技术网

Android 无法从可运行转换为线程

Android 无法从可运行转换为线程,android,multithreading,textview,delay,runnable,Android,Multithreading,Textview,Delay,Runnable,我收到这个错误消息“无法从可运行转换为线程”,这是针对威胁T=new Runnable(r)出现的 这是我的密码 final String[] texts = new String[]{player, player11, player111}; //etc final Runnable r = new Runnable(){ public void run(){ for(final int i=0;i

我收到这个错误消息“无法从可运行转换为线程”,这是针对威胁T=new Runnable(r)出现的

这是我的密码

final String[] texts = new String[]{player, player11, player111}; //etc
            final Runnable r = new Runnable(){
                public void run(){
                    for(final int i=0;i<texts.length;i++){
                        synchronized(this){
                            wait(30000); //wait 30 seconds before changing text
                        }
                        //to change the textView you must run code on UI Thread so:
                        runOnUiThread(new Runnable(){
                            public void run(){
                                TextView t = (TextView) findViewById(R.id.textView1);
                                t.setText(texts[i]);
                            }
                        });
                    }
                }
            };
            Thread T = new Runnable(r);
            T.start();
final String[]text=新字符串[]{player,player11,player111}//等
最终可运行r=新可运行(){
公开募捐{

对于(final int i=0;i
线程
实现
可运行
,而不是相反。

您的代码中有一行错误的代码

改变

Thread T = new Runnable(r);


Sherif是对的。我还建议进行一些代码清理,以避免所有的可运行程序和线程。只需使用处理程序进行更新,并在当前更新30秒后请求另一次更新。这将在UI线程上处理

TextView t;
Handler handler;
int count = 0;

@Override
public void onCreate(Bundle bundle)
{
    t = (TextView) findViewById(R.id.textView1);
    Handler handler = new Handler();
    handler.post(uiUpdater);
}

Runnable uiUpdater = new Runnable()
{
    @Override
    public void run()
    {
        count = (count + 1) % texts.length;
        t.setText(texts[count]);

        handler.removeCallbacks(uiUpdater);
        handler.postDelayed(uiUpdater, 30000);
    }
};

那我怎么才能修好呢?我是个业余爱好者
TextView t;
Handler handler;
int count = 0;

@Override
public void onCreate(Bundle bundle)
{
    t = (TextView) findViewById(R.id.textView1);
    Handler handler = new Handler();
    handler.post(uiUpdater);
}

Runnable uiUpdater = new Runnable()
{
    @Override
    public void run()
    {
        count = (count + 1) % texts.length;
        t.setText(texts[count]);

        handler.removeCallbacks(uiUpdater);
        handler.postDelayed(uiUpdater, 30000);
    }
};