片段中的Android动态微调器

时间:2014-06-18 07:26:38

标签: android fragment spinner

我需要帮助。我查看了其他帖子并尝试做同样的事情,但所有解决方案都不起作用。我试图用动态数据制作微调器,但总是停止工作......

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);

        final List<String> list=new ArrayList<String>();
        list.add("Item 1");
        list.add("Item 2");
        list.add("Item 3");
        list.add("Item 4");
        list.add("Item 5");

        Spinner s = (Spinner) rootView.findViewById(R.id.spinner1);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String(this.getActivity(), R.array.spinnerItems, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(getActivity().getBaseContext(), R.array.spinnerItems, android.R.layout.simple_spinner_item);
        s.setAdapter(dataAdapter);

        return rootView;
    }

请问,如何让它运行?

3 个答案:

答案 0 :(得分:3)

试试这种方式

  ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item, locations);
  dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  s.setAdapter(dataAdapter);

并确保您的片段已成功附加到您的活动,以便getActivity()不是NULL

答案 1 :(得分:0)

我相信,我们应该在getActivity()之内或之后拨打onActivityCreated(),之前它会返回null

因此,移动代码以绑定onActivityCreated()中的微调器选项,看看会发生什么。

此外,如果您可以发布错误日志,它将有助于其他人提出好的解决方案。

希望它有所帮助。

答案 2 :(得分:0)

取代this.getActivity()替换getActivity() ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item, locations);