web-dev-qa-db-ja.com

アプリケーションが閉じられたときにToastからのメッセージの表示を停止するにはどうすればよいですか?

これは私のサンプルコードです:

public class MainActivity extends Activity {

    Button buttonClick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonClick = (Button) findViewById(R.id.buttonClick);
        buttonClick.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "Here is the Toast", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

ボタンをクリックすると、トーストメッセージが表示されます。それはいいです。

私の質問は:

ボタンのmultiple timesをクリックしてから、applicationを閉じると、Toastsメッセージを表示する作業を開始し続けます。

そして、私はそれを望んでいません。

アプリケーションが閉じている場合は、Toastsもメッセージの表示を停止する必要があります。

誰かが私がこれのために何をしなければならないか教えてもらえますか?

11
Narendra Pal

アプリケーションが閉じている場合、Toastもメッセージの表示を停止する必要があります。

あなたの場合、cancel()Toastオブジェクトに呼び出して、onDestroy()メソッド内でキャンセルします。

これが 類似 の例です。

更新されました!

OPソリューションをテストしましたが、結果はありません。

.hide()および.cancel()メソッドはToastで使用できますが、機能していないようです。解決策は、Toastのように機能する独自のカスタムビューを作成する必要があり、Toastsが終了したときにすべてのActivityをキャンセルできることです。

9
RobinHood

トーストオブジェクトへの参照を保存します。 onDestroyで、トーストがnullでない場合は、cancel()を呼び出します。

4
Gabe Sechan

アプリが表示されていないときはいつでもトーストをキャンセルしたいので、メソッド 'onStop()'でキャンセルします。

ここに行きます:

public class MainActivity extends Activity {
    private Toast toast = null;
    Button buttonClick;

    @SuppressLint("ShowToast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
        buttonClick = (Button) findViewById(R.id.buttonClick);
        buttonClick.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                toast.setText("My toast!");
                toast.show();
            }
        });
    }

    @Override
    protected void onStop () {
        super.onStop();
        toast.cancel();
    }

}

編集:更新、OPが意図したとおりに機能するはずです。

3

ある条件でfinish()関数でOnCreate()を使用してみてください。これがお役に立てば幸いです。

0
Manoj Fegde

これを試して、

このコードを使用して、Toastの表示をキャンセルできます。

  final Toast toast = Toast.makeText(getApplicationContext(), "This message will    disappear     in half second", Toast.LENGTH_SHORT);
toast.show();

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.cancel(); 
       }
}, 500);
0
MuraliGanesan