尝试创建一个带有微调器的片段

Trying to create a fragment with a spinner in it

我想在我的片段中加入一个微调器。 ArrayAdapter 的构造函数具有对上下文的引用。在我的 activity 上,我会将其作为参数,即

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

当我将这段代码复制到我的片段中时 class 它用红色下划线标出了错误的参数。 我怎样才能让它工作?

代码:-

 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);

    }
}

使用getContext()代替this

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

因为在 Fragmentthis 不是 ContextFragment class 没有继承自 Context。所以使用父 Activity

Context

您正在 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);

使用下面的代码创建适配器,看看它是否有效。

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