0

Hi I am new to Android and I have a problem with using AsyncTask. I created an object called KelimeKutuphane and I want to add objects an ArrayList in doInBackground but some errors have occured:

06-24 00:50:09.091: E/AndroidRuntime(3880): FATAL EXCEPTION: AsyncTask #1
06-24 00:50:09.091: E/AndroidRuntime(3880): java.lang.RuntimeException: An error occured while executing doInBackground()
06-24 00:50:09.091: E/AndroidRuntime(3880):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.lang.Thread.run(Thread.java:856)
06-24 00:50:09.091: E/AndroidRuntime(3880): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
06-24 00:50:09.091: E/AndroidRuntime(3880):     at android.os.Handler.<init>(Handler.java:121)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at android.app.Activity.<init>(Activity.java:772)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at com.example.hangdeneme.KelimeKutuphane.<init>(KelimeKutuphane.java:30)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at com.example.hangdeneme.AsyncTaskKutup.doInBackground(AsyncTaskKutup.java:87)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at com.example.hangdeneme.AsyncTaskKutup.doInBackground(AsyncTaskKutup.java:1)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-24 00:50:09.091: E/AndroidRuntime(3880):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-24 00:50:09.091: E/AndroidRuntime(3880):     ... 5 more

and This is the related part of my AsyncTaskKutup.java that I use for adding objects to an ArrayList<KelimeKutuphane>

public class AsyncTaskKutup extends AsyncTask<String, String, ArrayList<KelimeKutuphane>>  {

    private Context context;
    private ProgressDialog progressDialog;
    ArrayList<KelimeKutuphane> tumKelimeler;
    ArrayList<KelimeKutuphane> filtered;
    private static int BITKI = 0;
    private int kategoriNum;
    private int turdakiKelimeSayisi = 10;

    public AsyncTaskKutup(Context context){
        super();
        this.context = context;
    }

    @Override
    protected void onPreExecute(){

        progressDialog = ProgressDialog.show(context, "", "Loading...");

    }

    @Override
    protected ArrayList<KelimeKutuphane> doInBackground(String... arg0) {


        tumKelimeler = new ArrayList<KelimeKutuphane>();

            //I have lots of those in here and when I delete those, this error goes:
        tumKelimeler.add(new KelimeKutuphane("some text", BITKI, 1, "More Text"));



        kelimeHazirla();
        return filtered;
    }


    @Override
    protected void onProgressUpdate(String... arg1) { 


    }

    @Override
    protected void onPostExecute(ArrayList<KelimeKutuphane> filtered){

        progressDialog.dismiss();


    }

    public void kelimeHazirla() {

        filtered = new ArrayList<KelimeKutuphane>();

        for(KelimeKutuphane kelime : tumKelimeler){

            if(kelime.getKelimeLevel() == 1 && filtered.size() < turdakiKelimeSayisi ){

                filtered.add(kelime);
                }


            }

        }

Problem was solved thanks to CommonsWare. I extended my object class with Activity class for some reason. Removing this extension solved the problem.

erkams
  • 74
  • 1
  • 9
  • 1
    Your stack trace indicates that your problem is in the constructor for `KelimeKutuphane`. What are you doing there? – CommonsWare Jun 23 '14 at 22:14
  • Thanks for that. I extended 'KelimeKutuphane' with 'Activity' class for something but I have just changed it and problem solved :) – erkams Jun 23 '14 at 22:29

1 Answers1

0

Your log says that your error is not about adding to ArrayList, but about AsyncTask

Can't create handler inside thread that has not called Looper.prepare()

As you know, AsyncTask internally uses a Handler. And and tbelhis causes issues in your case. Please see the answer following link:

AsyncTask and Looper.prepare() error

Community
  • 1
  • 1