0

Activity を拡張するクラスとは別に、アプリのロジックを制御するクラスがあり、この最後のクラス内で宣言されています。

そのクラスでトーストを使用する方法があるかどうか知りたいです。

そのクラスをアクティビティで拡張し、コンストラクターでコンテキストを送信しようとしましたが、うまくいきませんでした。

編集:

ここに、コンストラクターでコンテキストを渡す方法のコードがあります。

GameController newgame = new GameController(getApplicationContext());

public GameController(Context _context)
{       
    //...       
    context = _context;
}

Toast.makeText(context, "You can't bet this amount, the minimun bet is: " + minimun_bet, 2).show();

これを実行すると、次のエラーが発生します。

05-29 10:58:06.230: E/AndroidRuntime(5753): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
4

4 に答える 4

3

トーストは Context を使用するだけで表示できます。Context をこのクラスに渡すだけで問題ありません。私はすべてのカスタムクラスでこれを常に行っています。この渡すコンテキストをコンストラクターで実装/呼び出す方法を共有できれば、指摘するのに役立ちます。

基本的には、次のようなものです。

public MyClass{
    private Context context;
    public MyClass(Context context){
        this.context = context;
    }
    private void alert(String msg){
        Toast.makeText(this.context, msg, Toast.LENGTH_LONG).show();
    }
}

今、あなたがしたいことは、その Context に渡すときにその Context が有効かどうかを確認することです。getApplicationContext の代わりに誤って getBaseContext を使用して問題を引き起こす場合が非常に多くあります。しかし実際には、Activity を渡して Context として問題なくキャストすることができます。

于 2012-05-28T17:06:26.717 に答える
0

これを試してみてください

あなたのアクティビティで

コンテキスト context= new yourclass().getAndSetMyContext(Activity.this);

クラスのプライベート静的コンテキスト c;

public  Context getAndSetMyContext(Context c) {
    this.c = c;
    return this.c;
}

トーストが必要なメソッドで使用するだけです

Toast.makeText(c,message,Toast.LENGTH_SHORT).show();

于 2015-01-21T07:10:38.633 に答える