Android fragments setOnItemSelectedListener似乎只有在应用程序第一次启动时才起作用

Android fragments setOnItemSelectedListener似乎只有在应用程序第一次启动时才起作用,android-fragments,drop-down-menu,android-spinner,Android Fragments,Drop Down Menu,Android Spinner,我在片段菜单中使用微调器,将其数据加载到onCreateView中。当应用程序启动时,它可以正常工作,但是,当用户导航到另一个片段并返回或下次打开应用程序时,微调器会消失 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInst

我在片段菜单中使用微调器,将其数据加载到onCreateView中。当应用程序启动时,它可以正常工作,但是,当用户导航到另一个片段并返回或下次打开应用程序时,微调器会消失

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);

    setHasOptionsMenu(true);  
    getSpinnerValues(); //string request to add values to TrailList
}



 @Override                                                               // ...
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.map_menu, menu);
    super.onCreateOptionsMenu(menu, inflater);  //temp
    //setData();

    final MenuItem item = menu.findItem(R.id.trailfiller);
    mySpinner = (Spinner) MenuItemCompat.getActionView(item);
    ArrayAdapter<Trail> adapter = new ArrayAdapter<Trail>(getContext(), android.R.layout.simple_spinner_dropdown_item, TrailList); 
    mySpinner.setAdapter(adapter);

    mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Trail country = (Trail) parent.getSelectedItem();
            Toast.makeText(getContext(), ""+country.getId()+""+country.getName(), Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
}
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
super.onCreateView(充气机、容器、保存状态);
设置选项菜单(真);
getSpinnerValues();//向TrailList添加值的字符串请求
}
@覆盖/。。。
创建选项菜单(菜单菜单,菜单充气机){
充气机。充气(右菜单。地图菜单,菜单);
super.onCreateOptions菜单(菜单,充气机);//温度
//setData();
final MenuItem=menu.findItem(R.id.trailfiller);
mySpinner=(微调器)MenuItemCompat.getActionView(项);
ArrayAdapter=新的ArrayAdapter(getContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,TrailList);
设置适配器(适配器);
mySpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
Trail country=(Trail)parent.getSelectedItem();
Toast.makeText(getContext(),“”+country.getId()+“”+country.getName(),Toast.LENGTH_SHORT).show();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}


当它变为空白时,onItemSelected也不会被触发。奇怪的是,当值被硬编码时,微调器是一致的。我错过了什么

将触发选定的OnItemList。问题在于大小为0的ArrayList。在OnCreateOptions菜单中填充它会有所帮助。或者,您可以在OnCreateOptions菜单内的列表中添加一项,这将帮助您解决此问题

Spinner spinner= new Spinner();
    spinner.setName("select a country");
    TrailList.add(spinner);