2016-12-27 97 views
1

这是我的程序化按钮,logcat中存在错误空指针异常。如何以编程方式禁用函​​数onclick按钮

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

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

       } 
      }); 
     } 

    } 
+0

[I] .setEnabled(假)'还可以编辑更多的细节您的文章,因为它并不清楚你的要求 –

回答

0

您可以通过使用valueB[i].setOnClickListener(null);

+0

是的,它的工作,但如何如果我点击另一个按钮,要禁用此数组按钮? –

+0

您可以通过setTag()方法设置唯一的TAG来区分您的按钮。 – Naitik

0

使用setClickable法禁止的onclick监听器,你可以禁用按钮。

valueB[i].setClickable(false); 

,或者你可以将用户setEnabled方法为什么不使用`VALUEB也喜欢

valueB[i].setEnabled(false); 
+0

是否有可能使它当我点击另一个按钮并禁用此数组按钮? –

相关问题