所以我目前正在开发一个应用程序,它通过主要活动中的卡片显示一个 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 语句,因为
a) 我不知道如何获取当前选择的标签
b)我不确定切换选项卡后它是否会再次下载json文件,因为毕竟If语句将在onCreateView中
所以,我的问题是,
我该如何解决?