not sure why you're using the .Show() method, its best to use onCreateDialog for custom dialogs as well.
but either way, ASyncTasks dont run onPostExecute on the UI thread automatically, the run it on the thread the ASyncTask was created in. To avoid your issue either add a Handler to run the onPostExecute code on or try and using runOnUiThread On Thursday, November 22, 2012 3:37:44 PM UTC+2, Mr cool wrote: > > I have one problem with customized dialog box in android,i have created > the customized dialog using javainterface in android ,in my class > CustomizeDialog i have one thread do some process in back ground after that > i have set one imgae to this customized dialog i set the image in > OnPostExecute but i got the following error > > android.view.ViewRootImpl$CalledFromWrongThreadException: Only the > original thread that created a view hierarchy can touch its views. > i know we can't access the main ui from another thread but we access the > main ui in OnPostExecuted in my case that also not working , > in my another class(main.class) i will call this class by > CustomizeDialog customizeDialog = new CustomizeDialog(mContext); > customizeDialog.show(); > > this my code which create dialog box > > public class CustomizeDialog extends Dialog implements OnClickListener > { > Button okButton; > ImageView img = null; > ImageView img2=null; > ImageView img3 = null; > ImageView img4= null; > Bitmap bm; > > public CustomizeDialog(Context context) { > super(context); > > img2 = (ImageView) findViewById(R.id.imageView1); > img3 = (ImageView) findViewById(R.id.imageView3); > img4 = (ImageView) findViewById(R.id.imageView4); > > WindowManager.LayoutParams params = getWindow().getAttributes(); > params.x = 30; > params.height = 500; > params.width = 500; > params.y = 50; > > this.getWindow().setAttributes(params); > > setContentView(R.layout.test); > img = (ImageView) findViewById(R.id.imageView2); > > img.setBackgroundResource(R.drawable.sample); > > AnimationDrawable frameAnimation = (AnimationDrawable) > img.getBackground(); > > //Start the animation (looped playback by default). > frameAnimation.start(); > > new LongOperation1(context).execute(""); > > } > > else > { > Toast toast = Toast.makeText(getContext(), "Erorr", > Toast.LENGTH_SHORT); > toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); > toast.show(); > } } > > private class LongOperation1 extends AsyncTask<String, String, String> > { > > @Override > protected String doInBackground(String... params) { > //here i do some process > return "Executed"; > } > > @Override > protected void onPostExecute(String result) { > > // here i do some process to get bm > > img2.setImageBitmap(bm); > } > > @Override > protected void onPreExecute() { > } > @Override > protected void onProgressUpdate(String... values) { > } > } > > do any have idea about how to do this > -- 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+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en