#android
#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. Какая строка кода вызывает ошибку?
2. @Blackbelt — спасибо за помощь, я сделал, как вы предложили, и добавил super(); в качестве первой строки, но ошибка идентична.
Ответ №1:
Во-первых, context
переменной не должно быть static
. Ваш код, вероятно, будет работать с static
модификатором. Однако он используется неправильно.
Далее MyAppWebViewClient
конструктору требуется Context
параметр, поэтому вы должны предоставить его при создании MyAppWebViewClient
экземпляров. Например:
WebViewClient client = new MyAppWebViewClient(this);
Я предполагаю, что эта строка кода находится внутри метода подкласса Activity
. Если вместо этого вы находитесь в Fragment
подклассе, сделайте это:
WebViewClient client = new MyAppWebViewClient(getActivity());
Комментарии:
1. Большое вам спасибо, вы, вероятно, можете сказать, что я не эксперт, решение состояло в том, чтобы передать контекст из основного класса, я кое-что узнал сегодня 🙂