需要一些帮助。我使用后退按钮双击退出按钮与Toast下一个代码:
@Override
public void onBackPressed() {
if (back_pressed + 2000 > System.currentTimeMillis()) {
super.onBackPressed();
} else {
Toast.makeText(getBaseContext(), "Нажмите еще раз для выхода", Toast.LENGTH_SHORT).show();
}
back_pressed = System.currentTimeMillis();
}
在stackoverflow找到片段代码。我想这是问题的最佳解决方案。但有一个ecxeption - 退出应用程序后仍然在屏幕上吐司。用户单击两次后退按钮并关闭应用程序时如何终止吐司?
答案 0 :(得分:2)
申请结束时,我们无法杀死吐司。我们可以像下面的代码一样使用吐司。当您的应用关闭时,Toast.LENGTH_SHORT).show();
托饼的持续时间会缩短。
Toast.makeText(this, "Press again to exit.. ", Toast.LENGTH_SHORT).show();
或者,您可以通过以下代码设置Duration
Toast
:
Toast toast = Toast.makeText(getApplicationContext(), "Press again to exit..", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 500);
或者,您可以使用:
private Toast toast = null;
toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
//Toast.makeText(this, "Press again to exit..", Toast.LENGTH_SHORT).show();
toast.setText("Press again to exit..");
toast.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
@Override
protected void onStop () {
super.onStop();
toast.cancel();
}
答案 1 :(得分:1)
您应该可以使用helper class
达到目标。在我的应用程序中,我称之为ToastManager
。
在本课程中,您将管理application
的每个祝酒词,然后您可以决定是否解雇或展示它们。
我这样做是为了避免Toast
队列,当我显示另一个时,我正在解雇Toast
。
您可以按照以下方式实施,并在自定义dismissToast method
或application
中拨打Activity
。
public class ToastManager {
private static Toast m_currentToast;
public static void showToast(Context ctx, String text)
{
try {
if (m_currentToast != null) {
m_currentToast.cancel();
}
m_currentToast = Toast.makeText(ctx, text, Toast.LENGTH_LONG);
m_currentToast.show();
}catch(Exception ex){
ex.printStackTrace();
}
}
public static void dismissToast(){
if(m_currentToast != null){
m_currentToast.cancel();
}
}
}
Obv你必须通过调用showToast方法创建每个tost。
希望这会有所帮助
答案 2 :(得分:1)
关闭申请后,下一个代码立即擦除吐司:
@Override
protected void onStop () {
toast.cancel();
super.onStop();
}
我想这对我的应用来说已经足够了,它看起来很棒。 Tnx Abhishek kumar)