在片段

时间:2017-10-28 17:10:49

标签: java android fragment spinner adapter

我在Activity工作中运行以下代码但是我在Fragment中运行以下代码时不起作用。我需要在Fragment中使用这段代码。我是初学者。请帮帮我。


片段中的代码:

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

    Spinner categorySpinner = (Spinner) container.findViewById(R.id.category_spinner);
    ArrayAdapter<CharSequence> categoryAdapter = ArrayAdapter.createFromResource(getContext(), R.array.cat, R.layout.row_spinner);
    categorySpinner.setAdapter(categoryAdapter);

    return view;
}

我将getContext()更改为getActivity()thisthis.getActivity但不起作用。


错误(在categorySpinner.setAdapter(categoryAdapter中):

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference

2 个答案:

答案 0 :(得分:0)

您尝试在空对象上调用方法,因为您没有为您的片段获取正确的上下文。

更改以下行:

Spinner categorySpinner = (Spinner) container.findViewById(R.id.category_spinner);

要:

Spinner categorySpinner = (Spinner) getActivity().findViewById(R.id.category_spinner);

答案 1 :(得分:0)

{{1}}

使用视图而不是容器