現在、Androidアプリケーションの開発を開始しており、Googleマップアプリケーションの使い方と改善方法については、this tutorialをフォローしています。Androidで既に開いているトーストをキャンセルする
マップ上に地図を表示することができました。タッチのときに、逆方向ジオコーディングを使用して住所の住所が表示されます(Toast
)。しかし、ここに私の問題があります。地図上で何度も連続して何回かクリックすると、toasts
が1つずつ取得され、それぞれが自分の時間(私の場合はToast.LENGTH_LONG
)が消えてしまいます。私はアプリケーションが自動的に古いトーストを閉じて、新しいアドレスをクリックして新しいトーストを表示させたいと思っています。私は、この目的のためにtoast.cancel()
メソッドを使用する必要がある他のリソースで
が、私はそれを使用して問題が発生した - 私はすでにonTouchEvent
オーバーライドしている - どのように私はtoast
が表示されている間、マップの上に、新たなタッチがあると検出することができます? または、すでに開かれたtoast
を隠すためのより良い方法を提案しますか?
私のToast
アドレスをグローバルアドレスにしようとしましたが、それも機能しませんでした。ここで
は、アプリケーションのための私のコードです:
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p2 = mapView.getProjection().fromPixels((int) event.getX(), (int) event.getY());
Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(p2.getLatitudeE6()/1E6,
p2.getLongitudeE6()/1E6, 1);
String add = " ";
if (addresses.size() > 0)
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++)
add += addresses.get(0).getAddressLine(i) + "\n";
Toast address;
address = Toast.makeText(getBaseContext(), add, Toast.LENGTH_LONG);
address.show();
}
catch (IOException e) {
e.printStackTrace();
}
return true;
}
return false;
}
toast.cancel()は機能しません。それは呼ばれていますか? –
また、 'event.getAction()== 1'の代わりに' ACTION_UP == event.getAction() 'を使うことをお勧めします。それは単なる良いスタイルです。 –
の可能な複製[アンドロイドで別の方法で作成されたトーストをキャンセルする方法](http://stackoverflow.com/questions/5503682/how-to-cancel-toast-created-in-a-different-method-on - アンドロイド) – Wroclai