按钮无法在Android警报视图中工作?

时间:2017-12-22 08:32:17

标签: java android

我创建了一个自定义对话框,在该对话框中我声明了两个用于图像上传的按钮,但如果我因为以下错误而无法进入此对话框

  

处理:com.example.crowderia.eatitserver,PID:23218                                                                                      java.lang.NullPointerException:尝试调用虚方法'void   android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)”   在null对象引用上                                                                                          在   com.example.crowderia.eatitserver.HomeActivity.showDialog(HomeActivity.java:135)                                                                                          在   com.example.crowderia.eatitserver.HomeActivity.access $ 000(HomeActivity.java:46)                                                                                          在   com.example.crowderia.eatitserver.HomeActivity $ 1.onClick(HomeActivity.java:87)                                                                                          在android.view.View.performClick(View.java:4848)                                                                                          在android.view.View $ PerformClick.run(View.java:20300)                                                                                          在android.os.Handler.handleCallback(Handler.java:815)                                                                                          在android.os.Handler.dispatchMessage(Handler.java:104)                                                                                          在android.os.Looper.loop(Looper.java:210)                                                                                          在android.app.ActivityThread.main(ActivityThread.java:5839)                                                                                          at java.lang.reflect.Method.invoke(Native Method)                                                                                          在java.lang.reflect.Method.invoke(Method.java:372)                                                                                          在   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1113)                                                                                          在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:879)

如果我删除按钮的setOnclick listner,则显示对话框 我该如何解决这个问题请帮助我新的

private void showDialog() {

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(HomeActivity.this);
        alertDialog.setTitle("Add new category");
        alertDialog.setMessage("Please fill full information");

        LayoutInflater inflater = this.getLayoutInflater();
        View addMenuLayout = inflater.inflate(R.layout.add_new_menu_layout, null);

        edtName = (MaterialEditText) addMenuLayout.findViewById(R.id.edt_name);
        btnSelect = (Button) findViewById(R.id.btn_select);
        btnUpload = (Button) findViewById(R.id.btn_upload);

        btnSelect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chooseImage();
            }
        });

        btnUpload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                uploadImage();
            }
        });

        alertDialog.setView(addMenuLayout);
        alertDialog.setIcon(R.drawable.ic_shopping_cart_black_24dp);

        alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if(newCategory != null) {
                    category.push().setValue(newCategory);
                }

            }
        });
        alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        alertDialog.show();
    }

3 个答案:

答案 0 :(得分:3)

您的按钮在addMenuLayout

中膨胀
btnSelect = (Button)addMenuLayout. findViewById(R.id.btn_select);
btnUpload = (Button)addMenuLayout. findViewById(R.id.btn_upload);

答案 1 :(得分:0)

您必须通过提醒对话视图查找ID,因为您的视图存在于提醒对话框中。

btn_one=(Button)addMenuLayout.findViewById(R.id.btn);

你必须做这样的事情。

答案 2 :(得分:0)

从父视图中获取按钮。

Button btnSelect = (Button)addMenuLayout. findViewById(R.id.btn_select);
Button btnUpload = (Button)addMenuLayout. findViewById(R.id.btn_upload);