Thread Error in onTap()

Put problem concerning MapActivities, MapViews, Overlays and GPS in this forum.

Thread Error in onTap()

Postby burakkilic » Mon Oct 05, 2009 9:29 am

Hi. I'm adding a layout which contains image and buttons in runtime. I wanted to handle this in another thread because it takes time when it downloads the image. I used that code:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. @Override
  2.  
  3.         protected boolean onTap(int index) {   
  4.  
  5.                 final int tmpIndex= index;
  6.  
  7.                  new Thread(new Runnable() {
  8.  
  9.                             public void run() {
  10.  
  11.                                 final LinearLayout table = (LinearLayout)inflater.inflate(R.layout.infooverlay, null);                                 
  12.  
  13.                                         table.setWillNotDraw(false);
  14.  
  15.                                         final ImageView image= (ImageView)table.findViewById(R.id.HomeImage);
  16.  
  17.                                         image.setImageBitmap(new CustomHTTPBitmap("http://www.onlineilan.com/media/adimg/norm/t0/norm_125_0ADGHSUVZ.jpg").GetBitmap());
  18.  
  19.                                         final TextView text = (TextView)table.findViewById(R.id.Details);
  20.  
  21.                                         text.setText("Moda Caddesi Ağabey Sokak No:13-15 D:1 Moda/Kadıköy 100.000TL");
  22.  
  23.                                         final Button b = (Button)table.findViewById(R.id.btndetails);
  24.  
  25.                                         b.setText("Detaylar");
  26.  
  27.                                         b.setWillNotDraw(false);
  28.  
  29.                                         GeoPoint gp=createItem(tmpIndex).getPoint();                                   
  30.  
  31.                                         Point p= new Point();
  32.  
  33.                                         Projection projection= mapview.getProjection();
  34.  
  35.                                         p=projection.toPixels(gp, p);
  36.  
  37.                                         p.y-=40;
  38.  
  39.                                         GeoPoint g= projection.fromPixels(p.x, p.y);
  40.  
  41.                                         final MapView.LayoutParams lp2 = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT,MapView.LayoutParams.WRAP_CONTENT, g,MapView.LayoutParams.BOTTOM_CENTER);  
  42.  
  43.  
  44.  
  45. //It throws error after this line
  46.  
  47.                                         mapview.addView(table,lp2);//Problem starts here
  48.  
  49.                                         mapview.postInvalidate();
  50.  
  51.                                         mapview.MapController.animateTo(gp);                                   
  52.  
  53.                             }
  54.  
  55.                           }).start();          
  56.  
  57.                 return super.onTap(index);
  58.  
  59.         }
Parsed in 0.036 seconds, using GeSHi 1.0.8.4


So where is the problem?
burakkilic
Developer
Developer
 
Posts: 37
Joined: Thu Oct 01, 2009 10:24 am

Top

Postby tatyana.maximovskaya » Mon Oct 05, 2009 7:31 pm

Guess you receive "Only the original thread that created a view hierarchy can touch its views" error. Try using RunOnUIThread() in order to update views from an external thread.
tatyana.maximovskaya
Freshman
Freshman
 
Posts: 2
Joined: Sun Oct 04, 2009 9:12 pm

Top

Return to Map Problems

Who is online

Users browsing this forum: No registered users and 3 guests