別のトーストを表示したいときに、前のトーストをキャンセルできますか? 質問する

別のトーストを表示したいときに、前のトーストをキャンセルできますか? 質問する

私のアプリでは、アクティビティ用のカレンダー ウィジェットを作成し、前月または翌月にスクロールすると、トーストが表示されて表示されるようにしています。

質問は、トーストが表示されるまでに時間がかかることです。たとえば、十分に速くスクロールすると、「2012/05」と「2012/06」までスクロールし、一時停止せずに「2012/07」までスクロールすると、「2012/05」、「2012/06」、「2012/07」のトーストが 1 つずつゆっくりと表示されるまで待たなければなりません。

Androidにはトーストを管理するための目に見えないキューがあるようだ

これをクリーンアップして、最後のトーストだけを表示するにはどうすればよいですか? 待たずに特定のトーストをすぐに表示できますか?

私は検索しました「android.widget.Toast.java」方法を見つけましたcancel()が、残念ながら以下のようには機能しません。

if (t != null) {
    t.cancel();
}
t = Toast.makeText(this.mContext, mHelper.getYear() + "年"
                + (mHelper.getMonth() + 1) + "月", Toast.LENGTH_SHORT);
t.show();

ベストアンサー1

次のように「Toast」変数を宣言するだけです:

Toast toastMessage;

次に、関数内で次のようにします。

if (toastMessage!= null) {
    toastMessage.cancel();
}
toastMessage= Toast.makeText(context, "The message you want to display", duration);
toastMessage.show();

おすすめ記事