Soru & Cevap

Thread içinden textview set etmek.

18.02.2017 - 10:19

Arkadaşlar merhaba;

3 gündür uğraşıyorum artık sormam gerekiyor.

İstiyorum ki programım kasmasın arka planda bazı işler yapayım, Ana döngü dışında işlerimi yapayım..

Aşağıdaki kodda butona bastığımda gonder thread'i içinde a verisi ile birlikte fırlatılıyor. Daha sonra bunu thread yakalayıp txt textview içine yazması gerekirken program sonlanıyor

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt= (TextView) findViewById(R.id.timeview);
        button=(Button)findViewById(R.id.button3);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                gonder = new Thread(new gonder("a"));
                gonder.start();
            }
        });
    }


public class gonder implements Runnable
    {
        private String mesaj;
        public gonder(String mesaj)
        {
            this.mesaj = mesaj;
        }
        @Override
        public void run()
        {
            txt.setText(mesaj);   ////BURADA HATA ALIYORUM
        }
    }

HATA MESAJI :  android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

7 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user enrique34
enrique34
19.02.2017 - 03:46

 Kendimce çözüm buldum, aynı durumda olanlar için paylaşıyorum. Ama bunun sebebini bir anlatırsa çok memnun olacağım.

public void run()
        {
            runOnUiThread (new Thread(new Runnable()    
            {
            public void run()
             {
                int i;
                coming_data.setText("");
                for(i=0;i<mesaj.length();i++)
                {
                    data[i]=(byte) mesaj.charAt(i);
                    coming_data.setText("" + coming_data.getText() + data[i]);
                }
             }
            }));
        }

 

Melih Aksoy
20.02.2017 - 01:42
https://developer.android.com/guide/components/processes-and-threads.html Selam, aradığın açıklamayı bu linkte bulabilirsin. UI Thread kavramını ve kapsamını anlaman için yardımcı olacağını düşünüyorum. İyi çalışmalar !
picture-30491-1565085904.jpg
serhatleventyavas
18.02.2017 - 10:22

Dostum asynctask kullan :)

Referans Link : https://developer.android.com/reference/android/os/AsyncTask.html

Murat
18.02.2017 - 11:41
o çok fantastik olur butona tanımlamalıyım :)