Тема Android для Textviev проблемы с записью - PullRequest
0 голосов
/ 12 марта 2011

Я хочу написать textview простое слово через Thread, но оно принудительно закрывается

коды таковы:

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();
            }
        });




    }

1 Ответ

2 голосов
/ 12 марта 2011

Во-первых, вы должны были использовать adb logcat, DDMS или перспективу DDMS в Eclipse, чтобы изучить LogCat и посмотреть трассировку стека, связанную с вашим «принудительным закрытием».

Вы обнаружите, что ваше исключениечто-то вроде «Попытка изменить пользовательский интерфейс из потока, не являющегося пользовательским интерфейсом».

Вам нужно будет вызвать setText() из основного потока приложения, а не из фонового потока.Вы можете сделать это:

  • a Handler
  • , позвонив по номеру post() на свой TextView, передав Runnable
  • , позвонив по номеру runOnUiThread()на ваш Activity, передав Runnable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...