Я работаю над приложением для Android, и в настоящее время у меня проблема с передачей контекстов стандартному классу Java из ListFragment.
У меня есть класс с именем Common, и в конструкторе я передаю контекст, поэтому я могу выполнять различные общие задачи, такие как отображение диалогового окна предупреждения, чтобы я мог продолжать повторно использовать код вместо того, чтобы писать код каждый раз для каждого предупреждения. диалоговое окно, которое мне нужно. Чтобы инициализировать класс в стандартном действии, которое я использую.
Common common = new Common(this);
Приведенный выше код отлично работает, если это делается в классе, который расширяет Activity. Однако, если я хочу сделать то же самое, но в классе, который расширяет ListFragment, это не сработает, поэтому я использую следующий код для инициализации класса
Common common = new Common(getActivity().getApplicationContext());
Когда приведенный выше код выполняется в ListFragment, когда функция используется для отображения диалогового окна предупреждения «Да/Нет», я получаю принудительное закрытие с исключением
FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window
--token null is not for an application
Ниже приведен код конструктора класса
public Common(Context context)
{
this.context = context;
}
Еще раз повторюсь: все функции класса Common, включая диалоговое окно «Да/Нет», работают без проблем, если класс Common инициализируется из класса, расширяющего Activity с помощью this аргумент передается конструктору. Только если я getActivity().getApplicationContext() в качестве аргумента, переданного конструктору, я получаю эту ошибку.
В качестве теста я также изменил один из своих классов, который расширяет действие, и использовал getApplicationContext вместо этого, и я получаю ту же ошибку, поэтому это не обязательно связано со мной, используя ListFragment.
Спасибо за любую помощь, которую вы можете предоставить.