1

timer.setText("setTextHere")スレッド内では機能しません。

Thread thread1 = new Thread(){ 

            TextView timer;
            int t;
            public void run(){
                timer=(TextView) findViewById(R.id.timer);      
                try{
                    timer.setText("setTextHere");
                    sleep(5000);


                }
                catch(Exception e){ 
                    e.printStackTrace();                        
                }
                finally{
                    Intent new1 = new Intent("com.example.app1.MENU");
                    startActivity(new1);                    
                }                   
            }               
        };
        thread1.start();
4

5 に答える 5

2
_t = new Timer();
_t.scheduleAtFixedRate( new TimerTask() {
        @Override
        public void run() {
            _count++;
            runOnUiThread(new Runnable() //run on ui thread
             {
              public void run() 
              {
                _tv.setText( "" + _count );
              }
             });
        }
    }, 1000, 1000 ); 
于 2013-03-18T10:21:17.093 に答える
1

バックグラウンド スレッドから UI に触れることはできません。AsyncTask http://developer.android.com/reference/android/os/AsyncTask.htmlを使用してみてください

于 2013-03-18T09:12:00.410 に答える
0

onCreate() に次を追加します。

h = new Handler();

これをどこかに追加してください:

class SetText implements Runnable {
    public void run() {
       // do UI task
       timer.setText("setTextHere");
    }
}

someFunction() で次のように変更します。

...
try 
{
    h.post( new SetText() );
    sleep(5000);
}
...
于 2013-03-18T09:28:57.333 に答える
0
final TextView timer = (TextView) findViewById(R.id.timer);
new Thread(new Runnable() {
    public void run() {
        try {
            Thread.sleep(2000);
            timer.post(new Runnable() {
                public void run() {
                    timer.setText("setTextHere");
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            Intent new1 = new Intent("com.example.app1.MENU");
            startActivity(new1);
        }
    }
}).start();
于 2013-03-18T10:06:01.093 に答える