需要在非Activity类中使用Context

时间:2016-10-13 12:18:11

标签: android

有许多问题询问如何从另一个班级弹出祝酒词,我必须尝试过所有这些,但似乎都没有。

我正在扩展webViewClient,需要弹出一些与toast加载错误相关的消息,但是我似乎无法定义上下文?

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

首先,context变量不应为static。您的代码可能适用于static修饰符。但它使用不正确。

接下来,MyAppWebViewClient构造函数需要Context参数,因此您必须在创建MyAppWebViewClient实例时提供一个参数。例如:

WebViewClient client = new MyAppWebViewClient(this);

我假设这行代码在Activity的子类的方法内。如果您在Fragment子类中,请执行以下操作:

WebViewClient client = new MyAppWebViewClient(getActivity());