有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:TabHost只创建一个可以引用的LinearLayout

    ArrayList<LinearLayout> llal = new ArrayList<LinearLayout>();        
    for(int i=0; i<n; i++)
    {
        final int temp = i;
        String tabName = "tab " + i;
        TabHost.TabSpec tabSpec = tabHost.newTabSpec(tabName);

        TabHost.TabContentFactory tcf = new TabHost.TabContentFactory() {
            @Override
            public View createTabContent(String tag) {
                // TODO Auto-generated method stub
                //return llarray[temp];
                LinearLayout myll = new LinearLayout(TabActivity.this);
                llal.add(myll);
                myll.setId(View.generateViewId());
                myll.setOrientation(LinearLayout.VERTICAL);
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                MyFragment mf = MyFragment.newInstance("hi");
                ft.add(myll.getId(), mf).commit();
                return myll;
            }
        };
        tabSpec.setContent(tcf);
        tabSpec.setIndicator(tabName);
        tabHost.addTab(tabSpec);
    }

我在这里试图做的是动态创建选项卡,每个选项卡将包含一个LinearLayout来添加各自的片段。我试图做的是,我想为每个创建的选项卡访问LinearLayout,因此我计划将它们保存到一个数组中以供参考。在本例中,我使用ArrayList来测试将添加到ArrayList的LinearLayout量。当我调用myll.size()时,它给了我值1,这表示只有第一个创建的LinearLayout可以被引用。 谁能解释一下为什么会发生这种情况


共 (1) 个答案

  1. # 1 楼答案

    我知道问题出在哪里。虽然有点晚了,但我想把这个问题告诉其他人。它之所以给出值1,是因为在安卓系统中,除非您查看标签,否则不会创建标签。因此,这种方法不起作用。希望这能帮助那些得到空指针异常的人