4

最新のメッセージのみを表示し、以前のメッセージをすぐに破棄するために、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に表示されました。しかし、リリースされたアプリをマーケットからダウンロードすると、G1 ( ) にのみ表示され、Xoom ( ) には表示されません。Xoom を USB デバッグで接続しようとしましたが、関連するものは何も表示されませんでした。1.62.23.0CyanMod 6.13.0.1LogCat

これに先立って、私Toastは従来の方法 (つまり 経由Toast.makeText()) で s を実行していましたが、すべてが期待どおりに機能していました。

上記のコードに潜在的な問題があるのでしょうか、それとも Xoom のバグでしょうか? テストしたい場合に備えて、ここに私のアプリへのリンクがあります。メイン画面でをToastクリックすると、 が表示されます。助けていただければ幸いです。どうもありがとうございました :)TodayProgress

4

3 に答える 3

2

これはmToast.cancel();、トーストが表示されている場合は閉じたり、まだ表示されていない場合は表示されなかったりする可能性があるためです。

ユーザーがボタンをクリックしたときに、新しい Toast オブジェクトを作成してください。そして、以前の Toast オブジェクト参照を保持します。次にユーザーがボタンをクリックすると、前の Toast オブジェクトがキャンセルされ、新しい Toast が再度作成されます。

于 2011-08-04T13:01:47.507 に答える
2

よくわかりませんが、motorola が使用している SDK は異なる可能性があります..そしてmToast.cancel()何かひどいことをしている可能性があります..だから、これを試しましたか..

public void displayToast(CharSequence text) {

        mToast.setText(text);
        mToast.show();
    }
于 2011-08-04T12:24:52.737 に答える
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();
    }
}
于 2011-08-05T11:00:51.800 に答える