Android片段加载缓慢

时间:2014-04-02 22:15:12

标签: android android-fragments

我的活动包含一个列表视图(左侧)和一个右侧的片段容器(fill_parent) 在容器中,我想加载大约10个片段。

活动应该像设置页面一样,在左侧(列表视图)中选择一个动作/类别,在右侧"面板"您会看到该类别可用的多个选项。

代码工作正常,除了在显示活动时片段未全部加载,因此如果我点击一个类别(左侧列表视图项),容器(右侧)不显示它#s; s内容。点击左侧的多个项目后......最终......右侧开始显示从一开始就应该显示的内容。

我的问题是,如何在活动开始时显示一些Toast,它会一直显示在屏幕上,直到所有片段都被加载?

所以相关的代码如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        ListView lv = (ListView) findViewById(R.id.id_lista_optiuni); // the left-side listview
        FragmentManager fragmentManager = getFragmentManager();

        String[] values = new String[] { "Category one",
                "Category two",
                "Category three",
                ... (here are the rest values of course)
                "Category ten"
        };


        lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        lv.setTextFilterEnabled(true);
        lv.setItemChecked(1, true);

        MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, values); // here the adapter generates the design of the left listview
        lv.setAdapter(adapter);

        if (savedInstanceState != null) {
            // Here I restore last state for checked position.
            mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
        }
        lv.setItemChecked(mCurCheckPosition, true);
        lv.setSelected(true);

        FragmentTransaction transa = getFragmentManager().beginTransaction();
            mymerc= (merc_fragment) fragmentManager.findFragmentByTag("merc");
            if (mymerc == null) {
                mymerc = new merc_fragment ();
                transa.add(R.id.frag_container, mymerc, "merc");
            }
            mysort= (sort_fragment) fragmentManager.findFragmentByTag("sort");
            if (mysort == null) {
                mysort = new sort_fragment ();
                transa.add(R.id.frag_container, mysort, "sort");
            }
            ... // here follow the rest of the fragments
            ... // and now I decide which fragment I hide and which one I put on display
            transa.hide(mymerc);
            transa.hide(myment);
            ... (all other fragments get hidden except one)
            fragmentOnDisplay = mysort;
        transa.commit();

        // next I have the onItemClick event where I decide which fragment to display and display it.

所以这是代码,它可以工作,但就像我说的,加载所有片段(可能)需要一段时间,所以当用户出现左侧"菜单" listview,如果他立即开始点击项目,则右侧没有显示任何内容。

请不要建议我使用NavigationDrawer或TABHost或其他方法。这是我想要的,它简单明了。 请帮我实现这个目标。我想要的只是一条消息,它将通知用户片段已完成加载。

谢谢

0 个答案:

没有答案