Итак, в настоящее время я разрабатываю приложение, которое отображает файл json с помощью карточек в основном действии. В зависимости от того, какая вкладка в данный момент выбрана в моей активности с вкладками, метод, который загружает файл json, решает, какой файл json загрузить (я передаю целое число, и в методе есть переключатель).
Вот метод:
Fragment.Downloadjson(rootview,integer,context);
Теперь для моей активности с вкладками у меня есть SectionsPagerAdapter, в котором есть обычные вещи: getItem, getCount и getPageTitle.
В getItem я создаю свои новые фрагменты:
@Override
public Fragment getItem(int position) {
View v1 = getWindow().getDecorView().getRootView();
switch (position) {
case 0:
//Fragment.Download(v1,0,getApplicationContext());
return new Fragment().f(Fragment.page.TODAY);
case 1:
//Fragment.Download(v1,1,getApplicationContext());
return new Fragment().f(Fragment.page.TOMORROW);
default:
return new Fragment();
}
}
Исключение :
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
Я обнаружил, что источником этой ошибки является параметр rootview в моем методе, потому что он работает в onCreateView с параметром rootView
, потому что я определяю его там. Однако я не могу сделать оператор if для текущей выбранной вкладки или отображаемого в данный момент фрагмента, потому что
а) я не знаю, как получить текущую выбранную вкладку
б) я не уверен, что он снова загрузит файл json после того, как я переключу вкладку, потому что в конце концов оператор If будет в onCreateView
Итак, мой вопрос,
как мне это решить?