尝试使用微调器创建一个片段

时间:2018-05-26 17:10:57

标签: android android-arrayadapter android-spinner

我正在尝试在我的片段中放置一个微调器。 ArrayAdapter的构造函数具有对上下文的引用。在我的活动中,我会把它作为参数,即

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);

当我将这段代码复制到我的片段类中时,它用红色加下划线以获得错误的参数。 我怎样才能让它发挥作用?

守则: -

 void setUpSpinner()
    {

        Spinner spinner2;
        spinner2 = (Spinner) myView.findViewById(R.id.spinner2);
        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,
                android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(dataAdapter);

    }
}

3 个答案:

答案 0 :(得分:0)

使用getContext()代替this

 ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getContext(),
        android.R.layout.simple_spinner_item, list);

由于Fragment this不是ContextFragment类不会从Context继承。因此,请使用父Context

Activity

答案 1 :(得分:0)

你在ArrayAdapter中编写this这是一个片段,但它需要一个上下文

<强> Your Code : -

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this/*Over Here*/,
            android.R.layout.simple_spinner_item, list);

<强> Correct Code : -

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

答案 2 :(得分:0)

使用以下代码创建适配器并查看它是否有效。

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(activityContext,
        R.array.planets_array, android.R.layout.simple_spinner_item);

使用此参考:https://developer.android.com/guide/topics/ui/controls/spinner