android 怎么设置toast提示两次销毁活动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么设置toast提示两次销毁活动相关的知识,希望对你有一定的参考价值。
参考技术A public abstract class Toastpublic 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提示两次销毁活动的主要内容,如果未能解决你的问题,请参考以下文章