简体   繁体   中英

How to disable function onclick programmatically button

this is my programmatically button, there is the error null pointer exception in logcat.

This is my way to loop the button.But the disable button for the button cannot function.When i click on "save" button the programmatically button will disable. is it my way to disable button is incorrect?

 String CountQuery = "SELECT * FROM Category";
    db = new DBController(getActivity());
    SQLiteDatabase db2 = db.getReadableDatabase();
    Cursor cursor1 = db2.rawQuery(CountQuery, null);
    {
        int num = cursor1.getCount();
        Button[] valueB = new Button[num];
        for (int i = 1; i < num; i++) {

            String SelectQuery = "SELECT  * FROM Category where CategoryID='" + i + "'";
            db = new DBController(getActivity());
            SQLiteDatabase db1 = db.getReadableDatabase();
            Cursor cursor = db1.rawQuery(SelectQuery, null);

            if (cursor.moveToNext()) {

                String categoryName = cursor.getString(1);
                String coordinateX = cursor.getString(2);
                String coordinateY = cursor.getString(3);

                valueB[i] = new Button(getActivity());
                valueB[i].setText("" + categoryName);
                valueB[i].setId(i);
                valueB[i].setOnTouchListener(this);

                params = new RelativeLayout.LayoutParams(300, 100);
                params.leftMargin = Integer.parseInt(coordinateX);
                params.topMargin = Integer.parseInt(coordinateY);

                final int finalI = i;
                valueB[i].setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        Toast.makeText(getActivity(), "asdasd" + finalI, Toast.LENGTH_SHORT).show();
                        viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
                        viewPager.setCurrentItem(finalI);
                    }
                });
                mRrootLayout.addView(valueB[i],params);
            }

            save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    for (i[0] = 1; i[0] < num; i[0]++) {
                        valueB[i[0]].setOnTouchListener(null);
                    }

                }
            });
        }

    }

您可以使用valueB[i].setOnClickListener(null);禁用onclick侦听器valueB[i].setOnClickListener(null);

you can disable the button by using setClickable method.

valueB[i].setClickable(false);

or you can user setEnabled method also like

valueB[i].setEnabled(false);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM