片段中的警报对话框,应用程序崩溃

Alert dialog in Fragment, app get crashed

我想在片段布局中单击按钮时显示警告对话框。我已经试过了,但是应用程序在运行时崩溃了。

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

    binding = FragmentWalletBinding.inflate(inflater, container, false);

    Button button = (Button)getView().findViewById(R.id.add_money);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            AlertDialog.Builder alertdialog = new AlertDialog.Builder(view.getContext());
            alertdialog.setMessage("this is message");
            alertdialog.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(getContext(),"toast message",Toast.LENGTH_SHORT).show();
                }
            }).show();
        }
    });

    return binding.getRoot();
}

有问题
(Button)getView().findViewById(R.id.add_money);

请确保 id 与 XML 中的相同。

onCreateView returns View 可以进一步用getView()的方法得到。并且您在 onCreateView 有机会 return 拥有 View 框架之前调用它(它仍在方法内部,return binding.getRoot(); 还没有)

如果您正在使用视图绑定,那么从那里获取您的 Button

Button button = (Button) binding.addMoney;

甚至只是严格使用(没有额外的本地Button

binding.addMoney.setOnClickListener(...

如果您真的想使用 findViewById(但为什么...),那么您可以查看 binding.getRoot(),即使它还没有 returned/drawn[=23] =]

Button button = (Button) binding.getRoot().findViewById(R.id.add_money);