2012-01-24 3 views
1

Toastクラスのshow()メソッドをオーバーライドするだけで済みます。 Toastクラスを拡張したクラスを作成しましたが、次にトーストメッセージを作成しました。例外は、setView(View view)が呼び出されていません。しかし、私はこのメソッドに対してカスタムViewを作成するのではなく、デフォルトのものを使用したいと思います。Toastクラスのshow()をオーバーライドするだけです

setView(View view)メソッドでカスタムViewを作成せずに唯一show()メソッドをオーバーライドするにはどうすれば可能ですか?ここで

は、私が何をすべきかです:

MyOwnToast m = new MyOwnToast(getApplicationContext()); 
     m.makeText(getApplicationContext(), "Bla bla bla", Toast.LENGTH_LONG); 
     m.show(); 

そして、私のカスタムトーストはここにある:

public class MyOwnToast extends Toast { 
    public MyOwnToast(Context context) { 
     super(context); 
    } 

    @Override 
    public void show() { 
     super.show(); 
     Log.i("Dev", " 
} 

また、それは、dev siteに記載されている:

注:使用しないでください setView(View)でレイアウトを定義しない限り、Toastのパブリックコンストラクタです。 カスタムレイアウトを使用しない場合は、makeText(Context、int、int)を使用して トーストを作成する必要があります。

どのようにshow()メソッドをオーバーライドできますか?

答えて

1

オーバーライドでsuper.show()に電話しましたか? Toast.show()がこれを呼び出している可能性があり、呼び出しが行われないようにオーバーライドしている可能性があります。

あなたはおそらく行う必要がありますが、このようなものである。そして、

public class MyOwnToast extends Toast { 
    public MyOwnToast(Toast toast) { 
     //Code to initialize your toast from the argument toast 

     //Probably something like this: 
     this.setView(toast.getView()); 
     this.setDuration(toast.getDuration()); 
     //etc. for other get/set pairs in Toast 
    } 

    public static MyMakeText(Context context, CharSequence text, int duration) { 
     return new MyOwnToast(Toast.makeText(context, text, duration)); 
    } 

    public void show() { 
     //Your show override code, including super.show() 
    } 
} 

、あなたがそれを使用したい場合は、操作を行います。

MyOwnToast.MyMakeText(activity, "Some text", Toast.LENGTH_LONG).show(); 

は、際の基準とトーストのドキュメントを参照してください。これを埋めてください:http://developer.android.com/reference/android/widget/Toast.html

+0

はい、私はオーバーライドした 'show()'で 'super.show()'を呼び出します。 – Eugene

+0

コードを見ると、変数mを初期化するかのようにm.makeText()を呼び出しています。実際には、makeText()は静的であり、Toastオブジェクトを返します。このオブジェクトは無視されます。 mはまだ初期化されていないので、show()を呼び出すとエラーが発生します。 –

+0

うん!あなたが正しいです。それで私は何をすることができますか? – Eugene

関連する問題