android 怎么设置toast提示两次销毁活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么设置toast提示两次销毁活动相关的知识,希望对你有一定的参考价值。

参考技术A public abstract class Toast
public static final int LENGTH_SHORT = android.widget.Toast.LENGTH_SHORT;
public static final int LENGTH_LONG = android.widget.Toast.LENGTH_LONG;

private static android.widget.Toast toast;
private static Handler handler = new Handler();

private static Runnable run = new Runnable()
public void run()
toast.cancel();

;

private static void toast(Context ctx, CharSequence msg, int duration)
handler.removeCallbacks(run);
// handler的duration不能直接对应Toast的常量时长,在此针对Toast的常量相应定义时长
switch (duration)
case LENGTH_SHORT:// Toast.LENGTH_SHORT值为0,对应的持续时间大概为1s
duration = 1000;
break;
case LENGTH_LONG:// Toast.LENGTH_LONG值为1,对应的持续时间大概为3s
duration = 3000;
break;
default:
break;

if (null != toast)
toast.setText(msg);
else
toast = android.widget.Toast.makeText(ctx, msg, duration);

handler.postDelayed(run, duration);
toast.show();


/**
* 弹出Toast
*
* @param ctx
* 弹出Toast的上下文
* @param msg
* 弹出Toast的内容
* @param duration
* 弹出Toast的持续时间
*/
public static void show(Context ctx, CharSequence msg, int duration)
throws NullPointerException
if (null == ctx)
throw new NullPointerException("The ctx is null!");

if (0 > duration)
duration = LENGTH_SHORT;

toast(ctx, msg, duration);


/**
* 弹出Toast
*
* @param ctx
* 弹出Toast的上下文
* @param msg
* 弹出Toast的内容的资源ID
* @param duration
* 弹出Toast的持续时间
*/
public static void show(Context ctx, int resId, int duration)
throws NullPointerException
if (null == ctx)
throw new NullPointerException("The ctx is null!");

if (0 > duration)
duration = LENGTH_SHORT;

toast(ctx, ctx.getResources().getString(resId), duration);


本回答被提问者采纳

android sdk 在账户设置中提示 toast 消息

【中文标题】android sdk 在账户设置中提示 toast 消息【英文标题】:android sdk prompt toast message in account settings 【发布时间】:2013-12-06 11:03:05 【问题描述】:

我正在使用 AbstractAccountAuthenticator 并且我想为我的应用使用单一帐户。因此,当用户选择为此应用添加新帐户时,我想提示一条消息。我看到其他应用程序使用 toast 来发送消息,但由于某些原因,我的应用程序没有显示。

我这样显示消息:

public Bundle addAccount() 
    if (accounts.size() > 0) 
        Toast.makeText(context, R.string.MSG_ONLY_ONE_ACCOUNT_IS_SUPPORTED, Toast.LENGTH_LONG).show();
        return null;
    

任何想法为什么?我正在从 AbstractAccountAuthenticator 检查 addAccount() 方法中的帐号。

【问题讨论】:

你确认addAccount()被调用并且accounts.size()实际上是> 0吗? 是的,一切正常,除了没有显示的消息 【参考方案1】:

我一直在寻找同样的东西。以下答案对我有帮助:1、2。

使用您的代码示例:

private final Handler handler = new Handler();

public Bundle addAccount(...) 
    if (accounts.size() > 0) 
        final Bundle bundle = new Bundle();
        final String message = 
                  mContext.getString(R.string.MSG_ONLY_ONE_ACCOUNT_IS_SUPPORTED);
        bundle.putInt(AccountManager.KEY_ERROR_CODE, 1);
        bundle.putString(AccountManager.KEY_ERROR_MESSAGE, message);

        handler.post(new Runnable() 
            @Override
            public void run() 
                Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
            
        );

        return bundle;
    

【讨论】:

确保 Handler 是在 addAccount 方法之外定义的,否则你会得到一个错误(就像我做的那样)。仅供大家参考。 非常感谢您的这篇文章。拯救了我的一天。 谢谢!,我不知道这是否是在客户经理中显示错误的最佳方式,但它有效!

以上是关于android 怎么设置toast提示两次销毁活动的主要内容,如果未能解决你的问题,请参考以下文章

android sdk 在账户设置中提示 toast 消息

Android开发基础之消息提示组件Toast

Android开发基础之消息提示组件Toast

Android学习笔记(26):Toast提示信息框

Android Toast小解

单击两次后退按钮以退出活动