我有2个片段:
1.包含List
个项目的片段
2.包含spinner
个相同项目的片段。
我必须单击列表项以转到微调器片段(从列表片段发送位置,然后在spinnerfragment上发送setselection()
)
当我第一次单击列表项并转到微调器片段时,在旋转器中选择了所选项而没有任何问题,这将执行一些功能。
然后我通过导航抽屉转到相同的列表片段并单击另一个项目,会发生什么onItemSelected
被触发三次(检查调试模式)。前一个位置覆盖当前位置,即{{当前项目的1}}没有立即调用,前一个微调器位置用于显示上一个微调器项目。
我不知道setSelection
被解雇3次的原因是什么。谢谢
这是列表项单击的位置,我设置了要选择的ID:
onItemSelected
这是微调方(IncidentFragment),问题发生在onItemSelected:
holder.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
IncidentFragment incidentFragment = fragmentInteractionListener.getIncidentFragment();
fragmentInteractionListener.setGroupId(groupStatistics.get(position).getId());
((FragmentActivity)context).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, incidentFragment).commit();
}
});
这是从导航抽屉中选择的oNavigationItem来访问它 列表:
mGroupId = mListener.getGroupId();
ArrayAdapter<String> groupsAdapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item, groups);
groupSpinner.setAdapter(groupsAdapter);
groupSpinner.setOnItemSelectedListener(this);
for (int position = 0; position < mGroupList.size(); position++) {
if (mGroupId == mGroupList.get(position).getGroupId())
{
groupSpinner.setSelection(position);// first time item click from 1st fragment works,but this position is not sent for the next time
break;
}
}
groupSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
mGroupId = mGroupList.get(i).getGroupId();
mListener.setGroupId(mGroupId);
//the problem occurs here, first selected position from first fragment or the spinner selected item always overrides the position from seteSelection()
//Only works for the first time since no spinner selections have been made at that time
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
虽然我能够正确选择微调器项,但唯一的问题是我无法在一次之后设置setSelection()中使用的值。谢谢