私は現在、Geocoderを使用して都市検索の可能なGeoPointを検索するプログラムを作成しています。次に、ジオポイントを取得してオーバーレイとしてマップに追加すると、ユーザーはオーバーレイをクリックできます。アラートダイアログがポップアップ表示され、これが正しいかどうかを確認できます。
ユーザーが[はい]または[いいえ]をクリックした後、回答を取得できるスイングのようにアラートダイアログを機能させる方法がわかりませんでした。そこで、AlertDialog.Builderクラスをそのように拡張しました。これもDialog.OnClicklistenerです。
public class MyAlertDialog extends AlertDialog.Builder implements DialogInterface.OnClickListener{
final static int positiveMessage = 1;
final static int negativeMessage = 0;
final static int neutralMessage = -1;
private int myMessage;
public MyAlertDialog(Context activity) {
super(activity);
}
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == dialog.BUTTON_POSITIVE){
myMessage = positiveMessage;
}
else if(which == dialog.BUTTON_NEGATIVE){
myMessage = negativeMessage;
}
else{
myMessage = neutralMessage;
}
}
public int getMessage() {
return myMessage;
}
そして私はそれをそのように実装します
protected boolean onTap(int index) {
OverlayItem item = overlays.get(index);
MyAlertDialog dialog = new MyAlertDialog(ctx);
dialog.setTitle(item.getTitle());
dialog.setMessage("Is this the " + item.getTitle()
+ " you're looking for?");
dialog.setPositiveButton("Yes",null);
dialog.setNegativeButton("Cancel", null);
dialog.show();
if(dialog.getMessage()== MyAlertDialog.positiveMessage){
//do some stuff
ただし、何らかの理由で、メソッドが返されるまでダイアログが表示されないため、ダイアログが表示されることはありません。誰かアイデアはありますか?ああ、ctxは私のmapActivityへの参照です