【发布时间】:2023-03-22 20:09:02
【问题描述】:
所以我目前正在开发一个应用程序,它通过主要活动中的卡片显示一个 json 文件。根据当前在我的选项卡式活动中选择的选项卡,下载 json 文件的方法决定要下载的 json 文件(我传递一个整数,并且该方法中有一个开关)。
方法如下:
Fragment.Downloadjson(rootview,integer,context);
现在,对于我的选项卡式 Activity,我有一个 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参数,因为它在以rootView为参数的onCreateView中工作,因为我在那里定义了它。但是,我无法为当前选择的选项卡或当前显示的片段创建 if 语句,因为
a) 我不知道如何获取当前选中的标签
b) 我不确定切换选项卡后它是否会再次下载 json 文件,因为毕竟 If 语句会在 onCreateView 中
所以,我的问题是,
我该如何解决?
【问题讨论】:
-
查看此链接以获取当前标签stackoverflow.com/questions/3583405/…
-
@BrahmamYamani 我没有选项卡活动,我使用 android studio 中预先构建的 选项卡活动。因此,我无法使用 Tabhost。
标签: java android android-studio android-studio-2.0 tabbed-view