Общий тост не отображается в Android 3.0.1 на Motorola Xoom - PullRequest
4 голосов
/ 03 мая 2011

Я использую общий 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 s обычным способом (то есть через Toast.makeText()), и это работалона все, как и ожидалось.

Может ли быть какая-либо потенциальная проблема с моим кодом выше, или это может быть ошибка в Xoom?Вот ссылка на мое приложение , на случай, если вы захотите его протестировать.Toast должно отображаться при нажатии Today, Progress на главном экране.Я ценю любую помощь.Большое спасибо:)

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Это потому, что mToast.cancel(); может закрыть тост, если он отображается, или не показать его, если он еще не отображается.

Пожалуйста, создайте новый объект, еслипользователи нажимают кнопки.И сохраните предыдущую ссылку на объект Toast.В следующий раз, когда пользователь нажмет кнопки, отмените предыдущий объект Toast и снова создайте новый Toast.

2 голосов
/ 04 августа 2011

Я не уверен, но SDK, который использует Motorola, может отличаться ... и mToast.cancel() может быть чем-то ужасным ... так что вы пробовали это ...

public void displayToast(CharSequence text) {

        mToast.setText(text);
        mToast.show();
    }
1 голос
/ 05 августа 2011
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();
    }
}
...