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()
メソッドをオーバーライドできますか?
はい、私はオーバーライドした 'show()'で 'super.show()'を呼び出します。 – Eugene
コードを見ると、変数mを初期化するかのようにm.makeText()を呼び出しています。実際には、makeText()は静的であり、Toastオブジェクトを返します。このオブジェクトは無視されます。 mはまだ初期化されていないので、show()を呼び出すとエラーが発生します。 –
うん!あなたが正しいです。それで私は何をすることができますか? – Eugene