Android主机切换
我有一个FragmentTabhost,它有两个选项卡,其中两个选项卡都从internet获取数据,当我在选项卡之间切换时,以前加载的数据被重新加载,我在下面看到了响应 但这似乎并没有回答我的问题。尽管我们已经尝试过在以前的活动中使用类似于这样的包传递数据Android主机切换,android,fragment-tab-host,Android,Fragment Tab Host,我有一个FragmentTabhost,它有两个选项卡,其中两个选项卡都从internet获取数据,当我在选项卡之间切换时,以前加载的数据被重新加载,我在下面看到了响应 但这似乎并没有回答我的问题。尽管我们已经尝试过在以前的活动中使用类似于这样的包传递数据 private void prepareBundle() { Log.d("BUNDLE", "Bundle Rebuiled"); bundles = new ArrayList<Bundle>(
private void prepareBundle() {
Log.d("BUNDLE", "Bundle Rebuiled");
bundles = new ArrayList<Bundle>();
ArrayList<ListData> classData = new ArrayList<ListData>();
classData.add(new ListData("J.S.S.2A", 1));
classData.add(new ListData("J.S.S.3A", 12));
classData.add(new ListData("J.S.S.2B", 7));
Bundle classes = new Bundle();
classes.putParcelableArrayList("classData", classData);
ArrayList<ListData> subject = new ArrayList<ListData>();
subject.add(new ListData("Mathematics - J.S.S.1A", 1, 11));
subject.add(new ListData("Mathematics - J.S.S.1B", 4, 21));
subject.add(new ListData("Mathematics - J.S.S.2B", 6, 41));
subject.add(new ListData("Mathematics - J.S.S.2A", 8, 13));
Bundle subjects = new Bundle();
subjects.putParcelableArrayList("subjectData", subject);
bundles.add(classes);
bundles.add(subjects);
bundles.add(null);
}
for (int i = 0; i < MENUCLASSES.length; i++) {
Class currentClass = Class.forName(Utilities.PACKAGE + "."
+ MENUCLASSES[i]);
mTabHost.addTab(
setTabSpecs(this, mTabHost.newTabSpec(TAGS[i]),
R.drawable.ic_bk, menuText[i],
icon.getResourceId(i, -1)), currentClass, bundles.get(i));
}
private void prepareBundle(){
Log.d(“捆绑”、“捆绑重新捆绑”);
bundles=新的ArrayList();
ArrayList classData=新的ArrayList();
添加(新列表数据(“J.S.S.2A”,1));
添加(新列表数据(“J.S.S.3A”,12));
添加(新列表数据(“J.S.S.2B”,7));
Bundle classes=新Bundle();
classes.putParcelableArrayList(“classData”,classData);
ArrayList subject=新的ArrayList();
添加(新列表数据(“数学-J.S.S.1A”,1,11));
添加(新列表数据(“数学-J.S.S.1B”,4,21));
添加(新列表数据(“数学-J.S.S.2B”,6,41));
添加(新列表数据(“数学-J.S.S.2A”,8,13));
捆绑主题=新捆绑();
subjects.putParcelableArrayList(“subjectData”,subject);
bundles.add(类);
添加(主题);
bundles.add(null);
}
然后像这样在选项卡中应用
private void prepareBundle() {
Log.d("BUNDLE", "Bundle Rebuiled");
bundles = new ArrayList<Bundle>();
ArrayList<ListData> classData = new ArrayList<ListData>();
classData.add(new ListData("J.S.S.2A", 1));
classData.add(new ListData("J.S.S.3A", 12));
classData.add(new ListData("J.S.S.2B", 7));
Bundle classes = new Bundle();
classes.putParcelableArrayList("classData", classData);
ArrayList<ListData> subject = new ArrayList<ListData>();
subject.add(new ListData("Mathematics - J.S.S.1A", 1, 11));
subject.add(new ListData("Mathematics - J.S.S.1B", 4, 21));
subject.add(new ListData("Mathematics - J.S.S.2B", 6, 41));
subject.add(new ListData("Mathematics - J.S.S.2A", 8, 13));
Bundle subjects = new Bundle();
subjects.putParcelableArrayList("subjectData", subject);
bundles.add(classes);
bundles.add(subjects);
bundles.add(null);
}
for (int i = 0; i < MENUCLASSES.length; i++) {
Class currentClass = Class.forName(Utilities.PACKAGE + "."
+ MENUCLASSES[i]);
mTabHost.addTab(
setTabSpecs(this, mTabHost.newTabSpec(TAGS[i]),
R.drawable.ic_bk, menuText[i],
icon.getResourceId(i, -1)), currentClass, bundles.get(i));
}
for(int i=0;i
但下一个活动包含使用复杂数据结构的片段,我无法使用bundle传递这些片段,因为其中一个片段正在绘制图形。
我的问题是,如果数据以前已经获取过,如何防止选项卡从internet重新加载数据。谢谢您是否将查看寻呼机与FragmentPagerAdapter一起使用?不,我不使用查看寻呼机,只使用FragmentTabhost和用作容器的片段。您可以做的是在共享首选项中保存一些变量,如首次加载数据时的
dataFetched=true
。然后每次在应用程序包时,都将此值传递到bundle中标签。在Fragment oncreate或onresume方法中,检查是否提取了数据。如果没有,则从internet加载。@HordedoyinMatthewg您可以调用API的in活动并在片段中使用。