【问题标题】:SetAdapter is crashing Android studio in Fragment for spinnerSetAdapter 在 Fragment for spinner 中使 Android 工作室崩溃
【发布时间】:2018-08-16 01:37:25
【问题描述】:

当我注释掉setAdapter 行时,程序不会崩溃。

public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

final Spinner mySpinner = getActivity().findViewById(R.id.mySpinner);

ArrayAdapter adapter = ArrayAdapter.createFromResource(this.getActivity(), R.array.spinnerArray, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(adapter);

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

    return view;
}

我尝试使用 new ArrayAdapter 而不是 createFromResource 但这也不起作用。而且我已经把所有东西都放在了OnCreateView 方法中,所以这无济于事。我知道我遗漏了一些东西,我在MainActivity 中尝试过,效果很好。

【问题讨论】:

  • 你能发布你完整的片段代码吗?您缺少 View rootView = inflater.inflate(R.layout.fragment_my, parentViewGroup, false); return rootView; 并且您将代码放在视图之间。
  • 我已经添加了它,并把它放在那里,它仍然与 setAdapter 崩溃
  • 你能分享错误logcat吗
  • java.lang.NullPointerException:尝试在 aninterface.bondsj.com.srbuilder 的空对象引用上调用虚拟方法“void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)”。 InputPersonalDataFragment.onCreateView(InputPersonalDataFragment.java:43) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:2346) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428) 在 android .support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759) 我能适应的一切
  • 你能用xml发布你完整的片段代码吗

标签: android android-fragments fragment spinner


【解决方案1】:

试试这个:

问题是你没有放大视图

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

String [] values = 
    {"demo1","demo2","demo3","demo4","demo5"};
Spinner spinner = (Spinner) v.findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);

return v;

}

它可以帮助你。

【讨论】:

  • 我试过了,但它仍然崩溃。还有其他想法吗?
【解决方案2】:

因为在使用fragment 时,您必须在onCreateView 中扩展您的布局,然后在您从onCreateView 返回的视图引用上执行findViewById

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多