6

トーストのキャンセルについて多くの質問を見てきました。それらのどれも機能していません。

カスタムトーストを持っています。そのためのコードは、 http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastViewと同じ1行を除いてすべてです。

違いは次のとおりです。

  1. トースト変数はクラス変数として定義されます
  2. Javaコード全体がメソッドで記述されています。
  3. この方法の最初に、トーストをキャンセルするために次の行を追加しました。

    if (toast!=null){
        toast.cancel();
    }
    

このメソッドは、ユーザーがビュー/レイアウトを選択(onClick)したときに呼び出されます。問題は、ユーザーが数回選択すると、トーストがキューに入れられることです(toast.cancelが機能していません)。

解決策はありますか?

【更新】トーストオブジェクトを静的変数にしてみました。まだ動作しません。

4

4 に答える 4

7

私は同じ問題(カスタムトーストのキューイング)に苦しみ、解決策を見つけました。私の場合はうまくいきました。

カスタムトーストオブジェクトを持っていますinitially set to null

  • これがnullの場合、「new」を使用して新しいカスタムトーストオブジェクトを作成します。

  • 同じアクティビティを実行している限り、新しいオブジェクトを作成するために「新規」にしないでください。代わりに、そのオブジェクトを使用してください。setText()この場合は機能しませんのでsetView()、カスタムトーストと同じように使用してください。

  • このようshow(), cancel(), show(), cancel()にして、私が期待したとおりに機能しました。遅延もキューイングもありません。

お役に立てれば。

于 2011-10-30T07:09:16.083 に答える
2

最後に、カスタムダイアログを作成して、ユーザーが他のことを実行できないようにしました(また、複数のトーストがポップアップしないようにしました)。ユーザーが同じものをクリックしたときにダイアログを閉じるためのonClickリスナーイベントを追加しました。

Toast.cancel()が機能しないのは残念です。

于 2011-04-08T03:29:09.833 に答える
0

上記のコードtoast.setDuration(Toast.LENGTH_LONG); では、特定の時間を使用toast.setDuration(Toast.LENGTH_SHORT); または使用しています。トーストは自動的にキャンセルされます。キャンセルすることはできません。

于 2011-03-22T12:11:58.387 に答える
-2

カスタムテキストには次のコードを使用します。

LayoutInflater mInflater=LayoutInflater.from(context);
View view=mInflater.inflate(R.layout.tost_layout,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.show();
于 2012-11-22T13:53:37.600 に答える