[android]在 createFromResources() ArrayAdapter 不能应用于spinner

标签: Spinner Java Android
发布时间: 2016/9/11 23:48:10
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有问题时创建 ArrayAdapter 上我 spinner 。 我不知道如何向你们但人们解释说 picture 讲话所以我提供 picture 的我的问题.请帮我真不知怎样知道吗。 1000年字。

this is my error

这是我的课

public class SettingFragment extends Fragment{

private View rootView;
Spinner spinner;
ArrayAdapter<CharSequence> adapter;

public SettingFragment(){
    //required empty public constructor
}

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

    spinner = (Spinner)rootView.findViewById(R.id.spinner);
    adapter = ArrayAdapter.createFromResource(this, R.array.select_font_size, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    return rootView;
}

}

这是我的 string.xml

<string-array name="select_font_size">
    <item>Small</item>
    <item>Default</item>
    <item>Large</item>
    <item>Larger</item>
</string-array>

这是我 xml 代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">


<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:layout_gravity="center_horizontal" />

解决方法 1:

我建议要移动的创作 adapteronActivityCreated 回调时你肯定知道通过调用 getActivity() 你会得到一个非 null 实例的 activity :

public class SettingFragment extends Fragment{

private View rootView;
Spinner spinner;
ArrayAdapter<CharSequence> adapter;

public SettingFragment(){
    //required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.fragment_setting, container, false);
    spinner = (Spinner)rootView.findViewById(R.id.spinner);

    return rootView;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    adapter = ArrayAdapter.createFromResource(getActivity(), R.array.select_font_size, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
    }
}
官方微信
官方QQ群
31647020