Android中的NullPointer

时间:2014-01-09 07:47:22

标签: java android

我正在尝试在Android Activity中创建一个AlertDialog,它会增加或减少TextView中的值。

我使用此代码在AlertDialog中插入Android XML(enter_quantity是xml文件的名称)

    LayoutInflater li = LayoutInflater.from(context);
    View enterQuantityView = li.inflate(R.layout.enter_quantity, null); 

    final AlertDialog.Builder dialogEnterQuantity = new AlertDialog.Builder(context);
    dialogEnterQuantity.setView(enterQuantityView);

我在(CreateListSearch.java)

中输入了功能
final Button btAdd = (Button)findViewById(R.id.btEnterQuantity_Add);
final Button btSub = (Button)findViewById(R.id.btEnterQuantity_Sub);
final TextView tvQuantity = (TextView)findViewById(R.id.tvEnterQuantity_Quantity);

btAdd.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        int AddOne = Integer.parseInt(tvQuantity.getText().toString()) + 1;
        tvQuantity.setText("" + AddOne);
    }
});

btSub.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {


        int SubOne = Integer.parseInt(tvQuantity.getText().toString()) - 1;
        if (SubOne >= 0){
            tvQuantity.setText("" + SubOne);
        }else{
            tvQuantity.setText("0");
        }


    }
});

但是在行“btAdd.setOnClickListener”(新的View.OnClickListener(){“

中发生了NullPointerException

我可以做些什么来解决他的解决方案?

3 个答案:

答案 0 :(得分:3)

CHange to

 final Button btAdd = (Button)enterQuantityView.findViewById(R.id.btEnterQuantity_Add);
 final Button btSub = (Button)enterQuantityView.findViewById(R.id.btEnterQuantity_Sub);
 final TextView tvQuantity = (TextView)enterQuantityView.findViewById(R.id.tvEnterQuantity_Quantity);

我相信该按钮位于enter_quantity.xml

您需要在findViewById中使用无效视图对象,因为它会在当前膨胀的布局中查找视图

答案 1 :(得分:0)

嗨,请看这里

final Button btAdd = (Button)findViewById(R.id.btEnterQuantity_Add);
final Button btSub = (Button)findViewById(R.id.btEnterQuantity_Sub);
final TextView tvQuantity = (TextView)findViewById(R.id.tvEnterQuantity_Quantity);

更改

final Button btAdd = (Button)enterQuantityView.findViewById(R.id.btEnterQuantity_Add);
final Button btSub = (Button)enterQuantityView.findViewById(R.id.btEnterQuantity_Sub);
final TextView tvQuantity = (TextView)enterQuantityView.findViewById(R.id.tvEnterQ

在此示例代码上,以给定的方式编写您的警报对话框,以便于理解

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                context);

            // set title
            alertDialogBuilder.setTitle("Your Title");

            // set dialog message
            alertDialogBuilder
                .setMessage("Click yes to exit!")
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        // if this button is clicked, close
                        // current activity
                        MainActivity.this.finish();
                    }
                  })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        // if this button is clicked, just close
                        // the dialog box and do nothing
                        dialog.cancel();
                    }
                });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show(); 

答案 2 :(得分:0)

您必须首先在Builder中创建并显示AlertDialog

还从第一个节点获取视图引用,即enterQuantityView。

 LayoutInflater li = LayoutInflater.from(context);
 View enterQuantityView = li.inflate(R.layout.enter_quantity, null); 

 final AlertDialog.Builder dialogEnterQuantity = new AlertDialog.Builder(context);
 dialogEnterQuantity.setView(enterQuantityView);
 AlertDialog alertDialog = dialogEnterQuantity.create();
 alertDialog.show();