2012-05-07 3 views
0

Ceci est mon activité NearMe. Je veux des marqueurs sur google maps. Puis quelqu'un marque le marqueur ou superposition je veux montrer une boîte de dialogue d'alerte. Cet appel MapActivity de MapGroupActivityToast Travail mais alerte Dialog ne fonctionne pas lorsque vous cliquez sur overezed overlay dans TabGroupActiviy?

public class NearMeActivity extends MapActivity implements OnClickListener { 
    private Button imgbtn_map_filter; 
    private MapView mapView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.nearme_layout); 

     setMapNOverlay(); 
     setUI(); 
     imgbtn_map_filter.setOnClickListener(this); 

     final TabGroupActivity parentActivity = (TabGroupActivity) getParent(); 
     parentActivity.closeAllChildsExceptLastOne(); 
    } 

    private void setUI() { 
     imgbtn_map_filter = (Button) findViewById(R.id.btn_map_filter); 
    } 

    private void setMapNOverlay() { 
     mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 

     List<Overlay> mapOverlays = mapView.getOverlays(); 
     Drawable drawable = this.getResources().getDrawable(R.drawable.balloon); 
     MyItemizedOverlay itemezedOverlay = new MyItemizedOverlay(drawable, 
       this); 

     GeoPoint point = new GeoPoint(19240000, -99120000); 
     OverlayItem overlayitem = new OverlayItem(point, "Holaaaa! !!", 
       "Fuck offf"); 

     itemezedOverlay.addOverlay(overlayitem); 
     mapOverlays.add(itemezedOverlay); 

    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.btn_map_filter: 
      //start activity for result da var onlar incelenecek 
      Intent intent = new Intent(getParent(), TestActivity.class); 
      TabGroupActivity parentActivity = (TabGroupActivity) getParent(); 
      parentActivity.startChildActivity ("TestActivity", intent); 
      break; 
     default: 
      break; 
     } 

    } 
} 

Ceci est la classe ItemizedOverlay. J'essaie de montrer une boîte de dialogue d'alerte.

public class MyItemizedOverlay extends ItemizedOverlay { 
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 
    Context mContext; 
    public MyItemizedOverlay(Drawable defaultMarker, Context context) { 
     super(boundCenterBottom(defaultMarker)); 
     mContext = context; 
    } 

    //bir Overlay'e dokunduğu zaman olaylar olaylar 
    @Override 
    protected boolean onTap(int index) { 
     OverlayItem item =mOverlays.get(index); 
     AlertDialog.Builder dialog= new AlertDialog.Builder(mContext); 
     dialog.setTitle(item.getTitle()); 
     dialog.setMessage(item.getSnippet()); 
     try{ 
     dialog.show(); 
     }catch(Exception el){ 
      Log.d("Error: ---->" + e.toString) 
     } 
return super.onTap(index); 

}

public void addOverlay(OverlayItem overlay) { 
     mOverlays.add(overlay); 
     // ne zaman bir overlay eklesek populate methodunu çalıştırmamız 
     // gerekmektedir. Yen bir overlay 
     // nesnesi eklemek için 
     // populate methodu çalıştığı zaman overlay createItem çalıştıracaktır 
     populate(); 
    } 

    // eklenen overlay'in yerini verir. 
    @Override 
    protected OverlayItem createItem(int i) { 
     return mOverlays.get(i); 
    } 

    // eklenen yeni overlayın seize'ını almamız gerekmektedir 
    @Override 
    public int size() { 
     return mOverlays.size(); 

    } 
} 

Quand j'étais écrire Toast.makeText (mContext, "Bla bla", Toast.LENght_LONG) .show() -> exécuter avec succès mais buider dialogue d'alerte ne fonctionnent pas en méthode de robinet.

Je saisis cette erreur: android.view.WindowManager $ BadTokenException: Impossible d'ajouter la fenêtre - jeton [email protected] est pas valide; Votre activité est-elle en cours?

return super.onTap (index);

+0

ce lien vous suffit de suivre ma réponse sur la même question http://stackoverflow.com/questions/10415033/display-dialog-box-when-i-click-on-the-maps-place-marker-icon/10426479#10426479 –

+0

Je prends t son erreur: android.view.WindowManager $ BadTokenException: Impossible d'ajouter la fenêtre - token [email protected] n'est pas valide; Votre activité est-elle en cours? – icmeyecektim

Répondre

1

Copiez ce code dans NearMeActivity,

 @Override 
protected Dialog onCreateDialog(int id) { 

    // TODO Auto-generated method stub 

    switch (id) { 
     case 0: 
      return new AlertDialog.Builder(this).setTitle("Hello").setIcon(
        R.drawable.ic_launcher).setPositiveButton("Yes", 
        new OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog , 
           int which) { 

          // TODO Auto-generated method stub 

         } 
        }).setCancelable(true).setNegativeButton("Cancel", 
        new OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog , 
           int which) { 

          // TODO Auto-generated method stub 

         } 
        }) 

      .setOnCancelListener(new OnCancelListener() { 

       @Override 
       public void onCancel(DialogInterface dialog) { 

        // TODO Auto-generated method stub 
        Toast.makeText(getApplicationContext(), "Dismiss", 
          Toast.LENGTH_SHORT).show(); 
       } 

      }).create(); 


     default: 
      break; 
    } 
    return null; 
} 

Et appeler cette méthode de méthode onTap à la sous-classe de com.google.android.maps.ItemizedOverlay pour montrer dialogue:

 @Override 
    protected boolean onTap(int index) { 

     // TODO Auto-generated method stub 

     switch (index) { 
      case 0: 
       showDialog(0); 
            break; 
        } 
      } 
+1

merci frère. Je suis résolu problème de cette façon. J'ai changé juste un code de ligne. j'ai changé dans la classe NearMe MyItemizedOverlay itemezedOverlay = new MyItemizedOverlay (drawable, NearMeActivity.this.getParent()); au lieu de MyItemizedOverlay itemezedOverlay = new MyItemizedOverlay (drawable, this); – icmeyecektim

Questions connexes