当前位置: 代码迷 >> Android >> 微调器未填充在片段中
  详细解决方案

微调器未填充在片段中

热度:39   发布时间:2023-08-04 12:13:26.0

我正在尝试在一个片段中添加2个微调器。这些微调器相互连接。当用户选择一个值时,第二个微调器将填充值。 示例:第一个微调器有两个值,分别是“汽车”和“公共汽车”。 同样,当用户选择“ car”时,第二个微调器将以汽车的颜色填充为“红色”,“蓝色”。再次,如果用户选择“ Bus”,则第二个微调器将以总线的颜色填充为“绿色”,“白色”。 。

我已经在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;
}

尝试像这样调用适配器:

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

并且还使用equals()代替contentEquals

  相关解决方案