Androidアプリケーションを開発しましたが、Toast
で問題が発生しています。トーストを表示しているとすると、アプリケーションウィンドウに表示されます。ダイアログボックスが表示されたら、トーストはすぐには消えません。
トーストをキャンセルする方法を知りたいのですが。
_Toast.makeText
_はToast
オブジェクトを返します。このオブジェクトでcancel()
を呼び出して、キャンセルします。
トーストに指定できる最短の時間はToast.LENGTH_SHORT
値は0
しかし、実際には2000 milliseconds long
。それより短くしたい場合は、これを試してください。
final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT
カスタムトーストを作る必要はないと思います。
Toast
クラスのインスタンスを1つだけ作成します。 toast.setText("string")
を使用してトーストのテキストを設定し、toast.cancel()
メソッドでonDestroy()
メソッドを呼び出します。
次のように動作するコードスニペット:
package co.toast;
import Android.annotation.SuppressLint;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.Toast;
public class ShowToastActivity extends Activity {
private Toast toast = null;
Button btnShowToast;
@SuppressLint("ShowToast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// creates only one toast object..
toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
btnShowToast = (Button) findViewById(R.id.btnShowToast);
btnShowToast.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// only set text to toast object..
toast.setText("My toast!");
toast.show();
}
});
}
@Override
protected void onDestroy()
{
toast.cancel();
super.onDestroy();
}
@Override
protected void onStop () {
super.onStop();
toast.cancel();
}
}
これがお役に立てば幸いです。
これは、Toast
のcancel()
メソッドを使用した基本的な例です。
Toast mytoast;
mytoast = Toast.makeText(getApplicationContext(), "Hi Ho Jorgesys! ", Toast.LENGTH_LONG);
mytoast.show();
....
....
....
if(CancelToast){
mytoast.cancel();
}
Tostのcancelメソッドを使用します:toast.cancel();
Toast toast;
private void showToast(String text) {
if (toast!=null)
toast.cancel();
toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
toast.show();
}