これは私のサンプルコードです:
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もメッセージの表示を停止する必要があります。
誰かが私がこれのために何をしなければならないか教えてもらえますか?
アプリケーションが閉じている場合、Toastもメッセージの表示を停止する必要があります。
あなたの場合、cancel()
をToast
オブジェクトに呼び出して、onDestroy()
メソッド内でキャンセルします。
これが 類似 の例です。
更新されました!
OPソリューションをテストしましたが、結果はありません。
.hide()
および.cancel()
メソッドはToast
で使用できますが、機能していないようです。解決策は、Toast
のように機能する独自のカスタムビューを作成する必要があり、Toasts
が終了したときにすべてのActivity
をキャンセルできることです。
トーストオブジェクトへの参照を保存します。 onDestroyで、トーストがnullでない場合は、cancel()を呼び出します。
アプリが表示されていないときはいつでもトーストをキャンセルしたいので、メソッド '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が意図したとおりに機能するはずです。
ある条件でfinish()
関数でOnCreate()
を使用してみてください。これがお役に立てば幸いです。
これを試して、
このコードを使用して、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);