12

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

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を閉じると、Toastsはメッセージを表示する作業を開始し続けます。

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

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

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

4

5 に答える 5

10

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

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

これは同様の例です。

更新しました!

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

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

于 2013-02-11T06:00:07.197 に答える
4

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

于 2013-02-11T05:59:13.197 に答える
3

アプリが表示されていないときはいつでもトーストをキャンセルしたいので、メソッド'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が意図したとおりに機能するはずです。

于 2013-02-11T06:08:16.160 に答える
0

これを試して、

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);
于 2013-02-11T05:59:39.983 に答える
-1

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

于 2013-02-11T05:59:26.030 に答える