2011-03-12 37 views
0

我想寫的TextView通過主題簡單的兩個字,但它是強制關閉Android的線程Textviev寫問題

代碼是:

package thread.denemesi; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class baslat extends Activity { 
    Button buton1,buton2; 
    Thread thread2,thread1; 
    TextView yazi; 
    int sayi=0; 
    ArrayList<Integer> dizi; 
    int sayac=0; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     buton1=(Button)findViewById(R.id.button1); 
     buton2=(Button)findViewById(R.id.button2); 
     yazi=(TextView)findViewById(R.id.textview); 
     dizi=new ArrayList<Integer>(); 



     buton1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       thread1=new Thread(new Runnable() { 

        @Override 
        public void run() { 
       //  for (int i = 0; i < 100; i++) { 
        //  dizi.add(i); 


       //  } 
         for (int i = 0; i < 10; i++) { 

          sayac++; 
          try { 
           yazi.setText("i want to write a word"); 
           Thread.sleep(100); 

          } catch (InterruptedException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
         } 

         }    
        }); 
       thread1.start(); 
      } 
     }); 




    } 

回答

2

首先,你應該使用adb logcat,DDMS,或Eclipse中的DDMS透視圖檢查LogCat並查看與「強制關閉」相關的堆棧跟蹤。

你會發現你的異常類似於「試圖從非UI線程修改UI」。

您將需要從主應用程序線程調用setText(),而不是您的後臺線程。您可以通過這樣做:在您TextView

  • 一個Handler
  • 調用post(),傳遞Runnable
  • Activity調用runOnUiThread(),傳遞Runnable
+0

我要添加視圖佈局通過線程,但現在工作..同名錯誤 – metin 2011-03-13 15:01:31

+0

@metin:當然。您不能從後臺線程修改UI。使用我在答案中提到的任何技術將您的add-view-to-layout邏輯移動到主應用程序線程。 – CommonsWare 2011-03-13 15:18:06

+0

我解決了..如果你想添加或改變一些主要佈局的思想,你應該在OnResume()函數中寫你的代碼..謝謝 – metin 2011-05-21 00:36:45