Friday, November 12, 2010

[android-developers] Re: Show Progressbar while getting records from a cursor

Why don't you create a handler inside of the main activity like this

Hander mHandler = new Handler();

Move the anonymous inner Runnable class (which dismisses the dialog)
as a named private subclass of the activity called something like
"HandlerHelper".

Then call

mHandler.post(new HandlerHelper());

at the end of the worker thread

On Nov 12, 11:24 pm, ΠΑΣΧΑΛΗΣ ΠΛΙΑΧΑΣ <plia...@gmail.com> wrote:
> I try to load a cursor to an activity and i have this code after some help:
> public class ApodEsoListaSec extends Activity {
>     ProgressDialog mProgressDialog;
> .....
>
> public void onCreate(Bundle savedInstanceState) {
> super.onCreate(savedInstanceState);
> setContentView(R.layout.apod_eso2);
>
> //DEFINING A NEW THREAD WHICH WOULD DO SOME WORK AND THEN DISMISS THE DIALOG
> Thread workThread=new Thread(new Runnable(){
>
>     @Override
>     public void run() {
>
>         File f = new
> File(Environment.getExternalStorageDirectory()+"/DbSample.sqlite");
>         CursorFactory factory = null;
>
>         db =SQLiteDatabase.openDatabase(f.toString(),
> factory,SQLiteDatabase.NO_LOCALIZED_COLLATORS );
>
>         ListView list=(ListView)findViewById(R.id.restaurantsApod);
>         KtiriaId=getIntent().getStringExtra(DiamEso.ID_EXTRA);
>         EidosApod=getIntent().getStringExtra(DiamEso.ID_Eidos);
>         String comment;   // The generated insult.
>         model=DbFileApodEso.getAllEntos(KtiriaId,db);
>
>         startManagingCursor(model);
>         //
>         adapter=new RestaurantAdapter(model);
>         list.setAdapter(adapter);
>         list.setOnItemClickListener(onListClick);
>
>         someTimeConsumingWork(5000);
>         //ONLY ONE THREAD CAN HANDLE UI, INCLUDES DISSMISSAL OF
>         //PROGRESS DIALOG. runOnUiThread WILL DO ITS MAGIC HERE!
>         runOnUiThread(new Runnable(){
>
>             @Override
>             public void run() {
>                 mProgressDialog.dismiss();
>                 Toast.makeText(ApodEsoListaSec.this, "Work done!",
> Toast.LENGTH_LONG).show();
>             }
>
>         });
>     }
>
> });
>
> workThread.start();
>
> mProgressDialog=ProgressDialog.show(this, "Work Notify!", "Working
> hard, Phew!");
>
> private void someTimeConsumingWork(long milisToWork){
>     SystemClock.sleep(milisToWork);
>
> }
>
> //here are the classes
>
> class RestaurantAdapter extends CursorAdapter...
>
> class RestaurantWrapper...
>
> class DialogWrapper...
>
> }
>
> I can see the progressDialog but i eventually get the error
> ERROR/AndroidRuntime(6230): Caused by: java.lang.RuntimeException:
> Can't create handler inside thread that has not called
> Looper.prepare() why is that? And as i try to debug the error i
> realized that the error comes up when i call: adapter=new
> RestaurantAdapter(model); Any suggestion?

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate