Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android主机切换_Android_Fragment Tab Host - Fatal编程技术网

Android主机切换

Android主机切换,android,fragment-tab-host,Android,Fragment Tab Host,我有一个FragmentTabhost,它有两个选项卡,其中两个选项卡都从internet获取数据,当我在选项卡之间切换时,以前加载的数据被重新加载,我在下面看到了响应 但这似乎并没有回答我的问题。尽管我们已经尝试过在以前的活动中使用类似于这样的包传递数据 private void prepareBundle() { Log.d("BUNDLE", "Bundle Rebuiled"); bundles = new ArrayList<Bundle>(

我有一个FragmentTabhost,它有两个选项卡,其中两个选项卡都从internet获取数据,当我在选项卡之间切换时,以前加载的数据被重新加载,我在下面看到了响应 但这似乎并没有回答我的问题。尽管我们已经尝试过在以前的活动中使用类似于这样的包传递数据

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活动并在片段中使用。