Spinner不会填充片段

时间:2017-02-16 11:28:30

标签: android android-fragments android-spinner

我正在尝试在片段中添加2个微调器。这些微调器是互连的。当用户选择一个值时,第二个微调器将填充值。 示例:第一个微调器有2个值为" Car" &安培; "总线&#34 ;. 当用户选择" car"时,第二个微调器将被汽车的颜色填充为"红色","蓝色"。再次,如果用户选择总线,第二个微调器将被公共汽车的颜色填充为"绿色","白色"。

我已成功地在mainactivity中创建了这个。但是当我尝试在片段中实现时,第二个微调器没有被填充,也没有显示错误。

我提供的代码是我尝试在片段中实现的。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                       Bundle savedInstanceState) {
// Inflate the layout for this fragment

View rootView = inflater.inflate(R.layout.fragment_info_form, container, false);
    //spCountries = (Spinner) v.findViewById(R.id.idCrimePlace);

//set the spinners
crimePlace = (Spinner) rootView.findViewById(R.id.idCrimePlace);
metro = (Spinner) rootView.findViewById(R.id.idMetro);

crimePlace.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);
crimePlace.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            String spCrimePlace= String.valueOf(crimePlace.getSelectedItem());
            //Toast.makeText(this, crimePlace, Toast.LENGTH_SHORT).show();

            if(spCrimePlace.contentEquals("Car")) {
                List<String> list = new ArrayList<String>();
                list.add("Red");
                list.add("Blue");
                list.add("Others");
                ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),
                        android.R.layout.simple_spinner_item, list);
                dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                dataAdapter.notifyDataSetChanged();
                metro.setAdapter(dataAdapter);
            }
            if(spCrimePlace.contentEquals("Bus")) {
                List<String> list = new ArrayList<String>();
                list.add("Green");
                list.add("White");
                list.add("Other");
                ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(getActivity().getApplicationContext(),
                        android.R.layout.simple_spinner_item, list);
                dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                dataAdapter2.notifyDataSetChanged();
                metro.setAdapter(dataAdapter2);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
return rootView;
}

1 个答案:

答案 0 :(得分:0)

尝试调用适配器:

ArrayAdapter dataAdapter = new ArrayAdapter(this.getActivity(),
                        android.R.layout.simple_spinner_item, list);

并使用equals()代替contentEquals