如何在退出应用程序后杀死 Toast?
How to kill Toast after exit app?
需要一些帮助。我使用双击后退按钮退出带有 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();
}
在 Whosebug 上找到该片段代码。我想这是问题的最佳解决方案。但有一个例外 - 退出应用程序后,toast 仍在屏幕上。如何在用户单击两次后退按钮并关闭应用程序时终止吐司?
我们无法在应用程序关闭时终止 toast。我们可以像下面的代码一样使用 toast。 Toast.LENGTH_SHORT).show();
当您的应用程序关闭时,toast 持续时间减少。
Toast.makeText(this, "Press again to exit.. ", Toast.LENGTH_SHORT).show();
或者,您可以通过以下代码设置 Duration
of 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();
}
您应该可以通过使用 helper class
来实现您的目标。在我的应用程序中,我称之为 ToastManager
.
在此 class 中,您将管理 application
的每一个 toast,并且您可以决定是关闭还是显示它们。
我这样做是为了避开 Toast
队列,当显示另一个队列时,我将关闭 Toast
。
您可以像下面那样实现它并在您的自定义 application
或 Activity
.
中调用 dismissToast method
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();
}
}
}
显然,您必须通过调用 showToast 方法来创建每个 tost。
希望这对您有所帮助
下一个代码在关闭应用程序后立即擦除 toast:
@Override
protected void onStop () {
toast.cancel();
super.onStop();
}
我想这对我的应用程序来说已经足够了,它看起来很棒。
Tnx 阿布舍克·库马尔)
需要一些帮助。我使用双击后退按钮退出带有 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();
}
在 Whosebug 上找到该片段代码。我想这是问题的最佳解决方案。但有一个例外 - 退出应用程序后,toast 仍在屏幕上。如何在用户单击两次后退按钮并关闭应用程序时终止吐司?
我们无法在应用程序关闭时终止 toast。我们可以像下面的代码一样使用 toast。 Toast.LENGTH_SHORT).show();
当您的应用程序关闭时,toast 持续时间减少。
Toast.makeText(this, "Press again to exit.. ", Toast.LENGTH_SHORT).show();
或者,您可以通过以下代码设置 Duration
of 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();
}
您应该可以通过使用 helper class
来实现您的目标。在我的应用程序中,我称之为 ToastManager
.
在此 class 中,您将管理 application
的每一个 toast,并且您可以决定是关闭还是显示它们。
我这样做是为了避开 Toast
队列,当显示另一个队列时,我将关闭 Toast
。
您可以像下面那样实现它并在您的自定义 application
或 Activity
.
dismissToast method
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();
}
}
}
显然,您必须通过调用 showToast 方法来创建每个 tost。
希望这对您有所帮助
下一个代码在关闭应用程序后立即擦除 toast:
@Override
protected void onStop () {
toast.cancel();
super.onStop();
}
我想这对我的应用程序来说已经足够了,它看起来很棒。 Tnx 阿布舍克·库马尔)