Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未在片段中填充微调器_Android_Android Fragments_Android Spinner - Fatal编程技术网

Android 未在片段中填充微调器

Android 未在片段中填充微调器,android,android-fragments,android-spinner,Android,Android Fragments,Android Spinner,我试图在一个片段中添加两个微调器。这些微调器是相互连接的。当用户选择一个值时,第二个微调器将填充值。 示例:第一个微调器有两个值,分别为“Car”和“Bus”。 当用户选择“汽车”时,第二个微调器将由汽车的颜色填充为“红色”、“蓝色”。同样,如果用户选择总线,第二个微调器将由总线的颜色填充为“绿色”、“白色” 我已经在mainactivity中成功地实现了这一点。但是当我尝试在片段中实现时,第二个微调器没有填充,而且也没有显示错误 我提供了我试图在片段中实现的代码 @Override publi

我试图在一个片段中添加两个微调器。这些微调器是相互连接的。当用户选择一个值时,第二个微调器将填充值。 示例:第一个微调器有两个值,分别为“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;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图根视图=充气机。充气(R.layout.fragment\u info\u表单,容器,false);
//spCountries=(微调器)v.findViewById(R.id.idCrimePlace);
//设置微调器
crimePlace=(微调器)rootView.findviewbyd(R.id.idCrimePlace);
metro=(微调器)rootView.findviewbyd(R.id.idMetro);
crimePlace.setOnItemSelectedListener((AdapterView.OnItemSelectedListener)this);
crimePlace.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
String spCrimePlace=String.valueOf(crimePlace.getSelectedItem());
//Toast.makeText(this,crimePlace,Toast.LENGTH_SHORT).show();
if(spCrimePlace.contentEquals(“Car”)){
列表=新的ArrayList();
列表。添加(“红色”);
列表。添加(“蓝色”);
列表。添加(“其他”);

ArrayAdapter dataAdapter=新的ArrayAdapter(getActivity().getApplicationContext(), android.R.layout.simple\u微调器\u项目,列表); dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项); dataAdapter.notifyDataSetChanged(); setAdapter(dataAdapter); } if(spCrimePlace.contentEquals(“总线”)){ 列表=新的ArrayList(); 列表。添加(“绿色”); 列表。添加(“白色”); 列表。添加(“其他”); ArrayAdapter dataAdapter2=新的ArrayAdapter(getActivity().getApplicationContext(), android.R.layout.simple\u微调器\u项目,列表); dataAdapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); dataAdapter2.notifyDataSetChanged(); metro.setAdapter(dataAdapter2); } } @凌驾 未选择公共无效(AdapterView父级){ } }); 返回rootView; }
尝试调用适配器,如:

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

也可以使用
equals()
而不是
contentEquals

在哪里为
crimePlace
微调器设置适配器?为什么在
crimePlace
上调用了两次
setOnItemSelectedListener
?第二个
setOnItemSelectedListener
将覆盖同一片段中的第一个。metro微调器将填充到crimePlace微调器的onItemSelected中。crimePlace微调器将从string.xml获取值,而不是两次,第一个是crimePlace.setOnItemSelectedListener((AdapterView.OnItemSelectedListener)this);我也尝试过对这行进行注释,但没有起作用:(@radekJUncoment this toast,而不是crimePlace show there spCrimePlace并检查此值。或者使用debuggeruncenting toast,shows error“无法解析方法(匿名android.widget.AdapterView.OnItemSelectedListener,android.widget.Spinner,int)ArrayAdapter dataAdapter=新的ArrayAdapter(此.getActivity(),android.R.layout.simple_spinner_项,列表);显示此.getActivity()中的错误。请尝试仅使用
getActivity
getContext
我使用getActivity()。但仍然没有填充metro Spinner。如果条件允许,请在内部打印日志,以查看其是否进入…还请尝试
getContext
检查toast消息的打印内容:
toast.makeText(getActivity,crimePlace,toast.LENGTH_SHORT)。show();
也使用
equals