Java Android FragmentTransaction()非法状态异常:已添加片段
我试图在FrameLayout容器中显示多个片段。基本思想是使用微调器选择要在容器中显示的不同片段。我试图以编程方式添加它们,为此,我为一周中的每一天创建了一个xml文件,这就是我试图展示的内容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
// 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进行了修复。现在,内容没有重叠,到目前为止没有崩溃。祝你好运