2017-05-30 13 views
0

フラグメントのメニューでスピナーを使用しています。そのデータをonCreateViewに読み込みます。アプリが起動するとうまくいきますが、ユーザーが別のフラグメントに移動して戻ったり、次回にアプリを開いたりすると、スピナーが消えます。setOnItemSelectedListenerは、アプリケーションが初めて起動されたときにのみ動作するようです。

@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) { 
     } 
    }); 
} 

when the fragment is first loadedspinner is gone when the user navigates to a different fragment

それが消えた瞬間、onItemSelectedは注意すべきトリガeither.Strangeのものは値がハードコードされている場合、スピナーは一貫しているで取得されていません。私はここで何が欠けていますか?

答えて

0

onItemSelectedがトリガされました。問題は、サイズが0のArrayListにありました。これをonCreateOptionsMenuの内部に取り込むと役立ちます。また、onCreateOptionsMenu内のリストに項目を追加すると、この問題を取り除くのに役立ちます。

Spinner spinner= new Spinner(); 
    spinner.setName("select a country"); 
    TrailList.add(spinner); 
関連する問題