Android FragmentTransaction()IllegalStateException:已添加片段

时间:2014-06-19 22:59:58

标签: java android android-fragments fragment

我试图在FrameLayout容器中显示多个片段。基本思想是使用微调器选择要在容器中显示的不同片段。我试图以编程方式添加它们为此我已经为一周中的每一天创建了一个xml文件,这正是我想要展示的。

    // Set up the spinner to select days of the week.
        Spinner spinner = (Spinner) weekView.findViewById(R.id.day_selecter);
        spinner.setOnItemSelectedListener(new OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                // For each day of the week, create a new instance of Switches
                // get an instance of FragmentTransaction from your Activity
                FragmentManager fm = getFragmentManager();
                FragmentTransaction fragmentTransaction = fm.beginTransaction();
                Fragment frag = fm.findFragmentByTag(Integer.toString(pos));
                if(frag == null) {
                    switch(pos) {
                        case 0: frag = new mondayFragment();
                                break;
                        case 1: frag = new tuesdayFragment();
                                break;
                        case 2: frag = new wednesdayFragment();
                                break;
                        case 3: frag = new thursdayFragment();
                                break;
                        case 4: frag = new fridayFragment();
                                break;
                        case 5: frag = new saturdayFragment();
                                break;
                        case 6: frag = new sundayFragment();
                                break;
                    }
                    fragmentTransaction.add(R.id.week_program_switches, frag, Integer.toString(pos));
                }
                else
                    fragmentTransaction.replace(R.id.week_program_switches, frag, Integer.toString(pos));
                fragmentTransaction.commit();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

程序设法将对应于一周的第一天的片段,即mondayFragment加载到容器中。每个片段都包含文本框和复选框,因此我需要保存加载的每个片段的视图。有时应用程序允许我选择不同的一天,但前一个片段的内容会被转移,最终崩溃应用程序出现IllegalStateException错误:已经将日期添加到片段事务中。其他时候,只需在微调器中选择一个不同的日期就会立即崩溃应用程序并出现相同的错误。我真的需要你的帮助,因为我完全没有想法。

几个笔记: 1.我没有在任何布局中静态添加任何片段。我已经看到这是许多相关问题的原因。 2.我原本打算使用单个片段并在frameLayout容器中创建多个实例,但我在每个实例中都有类似的保存内容的问题。

0 个答案:

没有答案