java - Spinner Fragment 不断崩溃

标签 java android spinner

我正在制作一个程序,它将在 fragment 而不是 Activity 中包含 Spinner。我研究过为什么这可能会崩溃,但无济于事。我最初担心的是 .getView().findViewById(),但现在我不太确定这就是问题,因为 .这是代码。

public class Add extends Fragment {


public Add() {
    // Required empty public constructor
}

ArrayList<String> ingredients = new ArrayList<>();
SpinnerDialog spinnerDialog;
Button add;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


    add = (Button) getView().findViewById(R.id.add);
    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            spinnerDialog.showSpinerDialog();

        }

    });
    // Inflate the layout for this fragment

    return inflater.inflate(R.layout.fragment_add, container, false);

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    spinnerDialog = new SpinnerDialog(getActivity(), ingredients, "Select An Ingredient");
    spinnerDialog.bindOnSpinerListener(new OnSpinerItemClick() {
        @Override
        public void onClick(String Ingredient, int i) {

            Toast.makeText(Add.super.getContext(), "Selected ", Toast.LENGTH_SHORT).show();

        }
    });

最佳答案

没有看到堆栈跟踪,我不能肯定地说,但我怀疑这条线正在崩溃:

add = (Button) getView().findViewById(R.id.add);

这是因为 getView() 将返回 onCreateView() 返回的 View 实例...但您当前内部 onCreateView(),因此getView()将返回null

您可以按如下方式重写onCreateView(),它应该可以工作。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View root = inflater.inflate(R.layout.fragment_add, container, false);
    add = (Button) root.findViewById(R.id.add);
    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            spinnerDialog.showSpinerDialog();
        }
    });

    return root;
}

关于java - Spinner Fragment 不断崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156167/

相关文章:

java - post 方法不适用于 postman (chrome 扩展)

android - 如何在 XMPP 节/数据包的 <message> 元素中添加自定义字段?

android - 如何创建导致非启动器 Activity 的快捷方式?

android - View 在 setText 上变为空

r - 如何在 selectizeInput 加载所有选择之前添加微调器? [ Shiny 的]

javascript - AngularJS 旋转器未显示,可能是由于 http.get 触发太快

java - 从 java 运行交互式 Dos 程序

java - 没有用于将数据导出到 Excel 工作表的 HTML 代码的 JSP 页面

java - 虽然我已经为对象属性定义了值,但是它们都变成了 null?为什么?

android - 如何在 Android 中使用 onItemSelected?