4

私のアプリケーションでは、ボタンをクリックすると、トーストを次のように作成しています-

Toast.makeText(context,"Please Enter Username",Toast.LENGTH_SHORT).show();

しかし、誰かがボタンを 5 ~ 6 回クリックしてアプリケーションを閉じるか、別の画面に移動すると、別の画面でもしばらくの間トーストが表示され続けます。私は同じことに対して多くの解決策を見てきました。

私が試してみました -

toast = Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT);
        toast.show();

この乾杯をキャンセルしました-

onPause(){

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

}

そして同じonDestroy()

誰かがボタンを 5 ~ 6 回クリックしてアプリまたはそのアクティビティを終了すると、トースト メッセージが消えるようにしたいと考えています。または、同じ問題を解決するための代替案を提案してください。

4

2 に答える 2

16

しかし、それは私に力を与えてくれます - Toast was never called by using Toast.makeText();

フィールド変数とメソッドを作成して、一度に 1 つの Toast のみを表示することができます。

Toast toast;

public void displayToast(String message) {
    if(toast != null)
        toast.cancel();
    toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
    toast.show();
}

そして、onPause()終了時に既存のトーストをキャンセルします。

protected void onPause() {
    if(toast != null)
        toast.cancel();
    super.onPause();
}

トーストを表示したいときはいつでも、次のように呼び出します。

displayToast("Please Enter Username");
于 2013-01-13T04:48:25.587 に答える
0

これを試して :

Toast mToast;

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
      }

    @Override
    protected void onPause() {
        mToast.cancel();
        // TODO Auto-generated method stub
        super.onPause();
    }

    public void abc(View c) {

        mToast.cancel();
        mToast.setDuration(Toast.LENGTH_SHORT);
        mToast.setText("This is hi" + (i++));
        mToast.show();

    }

「Toast.makeText」を使用する代わりに「mToast.setText("")」を使用すると、目的の出力が得られます。

于 2013-01-13T07:04:20.587 に答える