在 Fragment 中使用 Spinner 和 Adapter
Posted
技术标签:
【中文标题】在 Fragment 中使用 Spinner 和 Adapter【英文标题】:Use Spinner and Adapter in Fragment 【发布时间】:2018-04-10 01:57:14 【问题描述】:我在 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()
或this
或this.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
【问题讨论】:
【参考方案1】:Spinner categorySpinner = (Spinner) view.findViewById(R.id.category_spinner);
使用视图代替容器
【讨论】:
【参考方案2】:您正在尝试调用空对象的方法,因为您没有为片段获取正确的上下文。
更改以下行:
Spinner categorySpinner = (Spinner) container.findViewById(R.id.category_spinner);
收件人:
Spinner categorySpinner = (Spinner) getActivity().findViewById(R.id.category_spinner);
【讨论】:
不起作用并向我显示错误:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
您是否在 xml 中为 category_spinner 设置了正确的活动上下文?以上是关于在 Fragment 中使用 Spinner 和 Adapter的主要内容,如果未能解决你的问题,请参考以下文章
根据另一个 Spinner 选择 (LiveData) 过滤 Spinner 的 Observed ViewModel 数据