2013-01-14 4 views
-1

threadactivity으로 시작됩니다. 에는 textview이라는 생성자가 있습니다. 실행시 textview을 업데이트하면 setText의 오류가 없습니다.Android에서 스레드 업데이트 UI

하지만 새로 입력 한 경우 매개 변수없이 thread을 입력하면 setTextView (TextView)setText()이 실행됩니다. 오류가 있습니다.

왜 이렇게 나타날 수 있습니까?

편집 : 내 코드로 텍스트 뷰를 업데이트하는 스레드의

package extthread; 

import android.widget.TextView; 

public class MyUpdateUIThread extends Thread { 

private TextView textView1; 

public MyUpdateUIThread(TextView textView1) { 
super(); 
this.textView1 = textView1; 
} 

@Override 
public void run() { 
super.run(); 
textView1.setText("zzzzzzzzzzzzzz"); 
} 

} 

------------------------------ 
package testtest.test.run; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import extthread.MyUpdateUIThread; 

public class Main extends Activity { 
TextView textView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

textView = (TextView) this.findViewById(R.id.textView1); 
Thread thread = new Thread(new MyUpdateUIThread(textView)); 
thread.start(); 

} 
}; 
+0

당신이 당신의 코드를 게시 할 수! – Nermeen

+0

포스트 코드와 오류. – m0skit0

답변

2

사용 runOnUiThread 내에서 실행 방법 : 현재 코드 스레드에서 같은

에서입니다 :

Your_Current_Activity.this.runOnUiThread(new Runnable() { 
    public void run() { 

      //update textview here 
    } 
}); 

편집이

별도의 수업. Thread 클래스에 Main Activity 인스턴스를 전달하여 스레드의 runOnUiThread에 액세스해야합니다.

private TextView textView1; 
Activity activity; 
public MyUpdateUIThread(TextView textView1,Activity activity) { 
super(); 
this.textView1 = textView1; 
this.activity=activity; 
} 

@Override 
public void run() { 
super.run(); 
activity.runOnUiThread(new Runnable() { 
    public void run() { 

     //update textview here 
     textView1.setText("zzzzzzzzzzzzzz"); 
    } 
}); 

} 

과 같은 주요 활동에 MyUpdateUIThread 객체를 생성 :로 MyUpdateUIThread 클래스 생성자를 변경

Thread thread = new Thread(new MyUpdateUIThread(textView,Main.this));