我在不同Toast
之间使用共享Activities
,以便仅显示最新消息,立即丢弃之前的消息。我将代码放在自定义Application
对象中:
public class GameApp extends Application {
private Toast mToast;
@Override
public void onCreate() {
super.onCreate();
mToast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
}
public void displayToast(int textId) {
displayToast(getText(textId));
}
public void displayToast(CharSequence text) {
mToast.cancel();
mToast.setText(text);
mToast.show();
}
}
我的Toast
,1.6
和2.2
仿真器上出现了3.0
。但是当我从市场下载已发布的应用时,它只显示在我的G1(CyanMod 6.1
)上,而不显示在Xoom(3.0.1
)上。我尝试将Xoom与USB调试连接起来,但LogCat
中没有任何相关内容。
在此之前,我过去常常以Toast
方式(即通过Toast.makeText()
)进行操作,并按预期方式处理所有事情。
我的上述代码是否存在任何潜在问题,或者这可能是Xoom中的错误?以下是my app的链接,以防您要测试它。当您在主屏幕中点击Toast
,Today
时,Progress
会显示。我感谢任何帮助。非常感谢你:))
答案 0 :(得分:2)
我不确定,但是摩托罗拉使用的sdk可能会有所不同......而且mToast.cancel()
可能会做一些可怕的事情......所以你试过这个......
public void displayToast(CharSequence text) {
mToast.setText(text);
mToast.show();
}
答案 1 :(得分:2)
这是因为mToast.cancel();
如果正在显示,可能会关闭它,或者如果它还没有显示则不显示。
用户点击按钮时,请创建新的Toast对象。并保留以前的Toast对象引用。下次用户单击按钮时,取消之前的Toast对象并再次创建新的Toast。
答案 2 :(得分:1)
public class GameApp extends Application {
private Toast mToast;
private Context mContext;
@Override
public void onCreate() {
super.onCreate();
mToast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
}
public void displayToast(int textId,Context mContext) {
this.mContext = mContext;
displayToast(getText(textId));
}
public void displayToast(CharSequence text) {
mToast.cancel();
mToast = new Toast(mContext);
mToast.setText(text);
mToast.setDuration(Toast.LENGTH_SHORT);
mToast.show();
}
}