用于微调器的arrayadapter保持错误

时间:2014-04-15 05:41:49

标签: java android

我想在我的Google Map类中制作微调器,这样我就可以改变像Google杂志,SATELLITE这样的googlemaps的视图。我在片段内的片段上创建了一个微调器。 当我声明arrayaddapter它继续显示"不幸的是,---已经停止"

public class GMaps extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{       
    View v = inflater.inflate(R.layout.popup_map, null, false);

    sview = (Spinner)getActivity().findViewById(R.id.spinner1);
    List<String> list = new ArrayList<String>();
    list.add("list 1");
    list.add("list 2");
    list.add("list 3");
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, list);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sview.setAdapter(dataAdapter);
    // ..

我认为这是因为参数context = this.getActivity() ...我试过这个.getView(),getActivity(),v.getContext,没什么用。

2 个答案:

答案 0 :(得分:1)

首先你应该改变这个

sview = (Spinner)getActivity().findViewById(R.id.spinner1);

sview = (Spinner)v.findViewById(R.id.spinner1);

它让你的Spinner view属于你inflated layout view

然后尝试设置适配器:

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

答案 1 :(得分:0)

//您的微调器位于popup_map.xml中,因此您需要执行

sview = (Spinner)getActivity().findViewById(R.id.spinner1);

而不是getActivity()您需要使用View v

sview = (Spinner)v.findViewById(R.id.spinner1);