gpt4 book ai didi

java - Spinner Fragment 不断崩溃

转载 作者:行者123 更新时间:2023-12-02 12:35:49 25 4
gpt4 key购买 nike

我正在制作一个程序,它将在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com