在摩托罗拉Xoom上的Android 3.0.1中不显示共享Toast

时间:2011-05-03 02:53:22

标签: android debugging android-3.0-honeycomb toast android-ui

我在不同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();
    }
}

我的Toast1.62.2仿真器上出现了3.0。但是当我从市场下载已发布的应用时,它只显示在我的G1(CyanMod 6.1)上,而不显示在Xoom(3.0.1)上。我尝试将Xoom与USB调试连接起来,但LogCat中没有任何相关内容。

在此之前,我过去常常以Toast方式(即通过Toast.makeText())进行操作,并按预期方式处理所有事情。

我的上述代码是否存在任何潜在问题,或者这可能是Xoom中的错误?以下是my app的链接,以防您要测试它。当您在主屏幕中点击ToastToday时,Progress会显示。我感谢任何帮助。非常感谢你:))

3 个答案:

答案 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();
    }
}