繁体   English   中英

如何以编程方式禁用函​​数onclick按钮

[英]How to disable function onclick programmatically button

这是我的编程按钮,在logcat中有错误空指针异常。

这是我循环按钮的方法。但是按钮的禁用按钮无法正常工作。当我点击“保存”按钮时,编程按钮将禁用。 是我的方式禁用按钮是不正确的?

 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);

您可以使用setClickable方法禁用该按钮。

valueB[i].setClickable(false);

或者你也可以像用户setEnabled方法一样

valueB[i].setEnabled(false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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