J'ai un MapView, avec itemizedoverlays, exactement comme dans l'exemple de guide des développeurs Android: http://developer.android.com/resources/tutorials/views/hello-mapview.htmlIl est possible de démarrer une classe Intent from ItemizedOverlay? (Point MapView)
sur le itemizedoverlay, j'ai une boîte de dialogue personnalisée, avec un bouton. Tout va bien jusqu'à ici, mais maintenant j'ai des problèmes en essayant d'ajouter la fonctionnalité au bouton. J'ai besoin que le bouton commence une nouvelle activité, mais je ne peux pas réaliser cela ... pourquoi? parce que sur cette ligne: i = new Intent (NyItemizedOverlay.class, Locate.class);
j'ai la classe d'intention actuelle en tant que premier paramètre, et la classe d'intention de cible au deuxième paramètre. MyItemizedOverlay n'est pas une classe Intent ... c'est l'extension ItemizedOverlay, alors elle ne compile pas quand j'essaye de lancer l'intention, j'essaye de passer une classe normale comme premier argument, et elle a besoin d'une classe d'intention. Je dois mettre la classe de lanceur, mais la classe de lancement n'est pas une intention: S
Si j'essaye de mettre une autre classe d'intention sur le premier argument, j'ai eu cette erreur: No enclosing instance of the type AllActivity is accessible in scope
.... (AllActivity est un public classe d'activité de mon application)
Comment puis-je résoudre ce problème?
code complet ici:
public class MyItemizedOverlay extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private ArrayList<String> permissions = new ArrayList<String>();
private Context mContext;
public MyItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
public int size() {
return mOverlays.size();
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
public void addOverlay(OverlayItem overlay,String permission) {
mOverlays.add(overlay);
permissions.add(permission);
populate();
}
public MyItemizedOverlay(Drawable defaultMarker, Context context) {
//super(defaultMarker);
super(boundCenterBottom(defaultMarker));
mContext = context;
}
public void clear()
{
mOverlays.clear();
permissions.clear();//lista de permisos de cada usuario, ya que hay dos campos, el email (snippet) y el permission, una lista.
}
protected boolean onTap(int index) {
try{
OverlayItem item = mOverlays.get(index);
if (permissions.size()==0)
{
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
}
else
{
//set up dialog
Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.personal_dialog);
dialog.setTitle(item.getTitle());
dialog.setCancelable(true);
//there are a lot of settings, for dialog, check them all out!
//set up text
TextView DialogEmail = (TextView) dialog.findViewById(R.id.DialogEmail);
TextView DialogPermission = (TextView) dialog.findViewById(R.id.DialogPermission);
DialogEmail.setText(item.getSnippet());
DialogPermission.setText(permissions.get(index));
final String userName=item.getTitle();
final String email=item.getSnippet();
final int cont=index;
//set up button
Button button = (Button) dialog.findViewById(R.id.DialogButton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do something
Bundle bundle = new Bundle(); //bundle is like the letter
bundle.putString ("user",userName); //arg1 is the keyword of the txt, arg2 is the txt
bundle.putString ("email", email);
bundle.putString ("permission", permissions.get(cont));
Intent i=null;
i = new Intent (MyItemizedOverlay.class, Locate.class);
i.putExtras(bundle);
startActivity(i);
}
});
//now that the dialog is set up, it's time to show it
dialog.show();
}
}catch(Exception e){}
return true;
}
}
résolu! Merci beaucoup – NullPointerException