Spinner onItemSelected的先前位置会覆盖Fragment

时间:2017-12-28 07:34:04

标签: java android android-fragments spinner onitemselectedlistener

我有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()中使用的值。谢谢

0 个答案:

没有答案