Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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
Java Android FragmentTransaction()非法状态异常:已添加片段_Java_Android_Android Fragments_Fragment - Fatal编程技术网

Java Android FragmentTransaction()非法状态异常:已添加片段

Java Android FragmentTransaction()非法状态异常:已添加片段,java,android,android-fragments,fragment,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.setO

我试图在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容器中创建多个实例,但在每个实例中保存内容时遇到了类似的问题。

只有在您两次单击同一片段时才会崩溃吗?我想我可能已经通过简单地将fragmentTransaction.add替换为fragmentTransaction.replace进行了修复。现在,内容没有重叠,到目前为止没有崩溃。祝你好运