我正在创建一个简单的考试问题应用程序。这就是为什么我根据问题动态创建多个片段的原因。 该片段包含一个问题的TextView和四个选项的RadioButtons。活动中有一个按钮可以清除选择(如果选择了答案)。 我为此创建了 interface 并将其实现为一个片段,并尝试取消选中所有单选按钮,但是该方法正在调用,但是大多数情况下单选按钮仍处于选中状态,而很少被取消选中。我没有得到什么帮助,请帮忙。
当我重新检查所有内容时,当我连续选择8个问题的8个选项并从第一个片段中取消选中每个选项时,我发现了一件事。当我位于片段的第0个位置并单击按钮时,它会取消选中该复选框;但是当我滚动到下一个片段(第1个)并单击按钮时,它会分别取消选中第二个位置的片段。第二个未选中第3个,第三个未选中第四个,4th取消选中5th,5th什么都没有发生,6th取消选中7th。请告诉我如何解决这个问题。
代码如下,
FragmentManager fm = getSupportFragmentManager();
viewPager.setAdapter(new FragmentStatePagerAdapter(fm) {
public int getCount() {
return titles.size();
}
public Fragment getItem(int position) {
QuestionsFragment fragment = new QuestionsFragment();
fragment.setText(titles.get(position), position); //
return fragment;
}
public int getItemPosition(Object item) {
QuestionsFragment fragment = (QuestionsFragment)item;
String title = fragment.getText();
int position = titles.indexOf(title);
if (position >= 0) {
return position;
} else {
return POSITION_NONE;
}
}
});
接口:
public interface ClearSelection {
public void reamoveAllSelections();}
片段:
public final class QuestionsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.question_fragment, null);
textView = view.findViewById(R.id.tv_question);
rbOptionOne = view.findViewById(R.id.rb_option_one);
rbOptionTwo = view.findViewById(R.id.rb_option_two);
rbOptionThree = view.findViewById(R.id.rb_option_three);
rbOptionFour = view.findViewById(R.id.rb_option_four);
((QuestionsActivity)getActivity()).clearSelectionApi(new ClearSelection() {
@Override
public void reamoveAllSelections() {
if (rbOptionOne.isChecked()) {
rbOptionOne.setChecked(false);
}
if (rbOptionTwo.isChecked()) {
rbOptionTwo.setChecked(false);
}
if (rbOptionThree.isChecked()) {
rbOptionThree.setChecked(false);
}
if (rbOptionFour.isChecked()) {
rbOptionFour.setChecked(false);
}
}
});
return view;
}}
或者如果有其他选择可以建议您做同样的事情,请提出建议。预先感谢。
答案 0 :(得分:0)
尝试在OnAttach()片段方法中使用此代码。