2016-10-13 6 views
-2

トーストを別のクラスからポップアップする方法を質問するには、多くの質問があります。アクティビティ以外のクラスでコンテキストが必要

私はwebViewClientを拡張しており、エラーなどのロードに関するメッセージをトーストでポップアップする必要がありますが、コンテキストを定義できないようです。

public class MyAppWebViewClient extends WebViewClient { 

    private static Context context; 
    public MyAppWebViewClient(Context c) { 
     context = c; 
    } 

    public static void popup(String message){ 
     Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
    } 

    popup("Hello World") 
} 

そして、これは誤りです:

Error:(301, 34) error: constructor MyAppWebViewClient in class MyAppWebViewClient cannot be applied to given types; 
required: Context 
found: no arguments 
reason: actual and formal argument lists differ in length 

私が間違っているのは何?

+0

どのようなコードがエラーを起こしますか? –

+0

@Blackbelt - 助けてくれてありがとう、私はあなたが示唆したようにしてsuper()を追加しました。最初の行はエラーですが、エラーは同じです。 – crankshaft

答えて

0

最初に、context変数はstaticであってはなりません。あなたのコードはおそらくstatic修飾子で動作します。しかし、誤って使用されています。

次に、MyAppWebViewClientコンストラクタにはContextパラメータが必要です。したがって、MyAppWebViewClientインスタンスを作成する際には、このパラメータを指定する必要があります。例:

このコード行は、サブクラスActivityのメソッドの内部にあると仮定します。 Fragmentサブクラスの場合は、次のようにします。

WebViewClient client = new MyAppWebViewClient(getActivity()); 
+0

ありがとう、おそらく私は専門家ではないことが分かります。解決方法はメインクラスのコンテキストを渡すことでしたが、今日は何かを学びました:-) – crankshaft

関連する問題