2016-12-27 9 views
1

これはプログラムによるボタンです。logcatにエラーポインタnull例外があります。関数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

のようなユーザsetEnabled方法、それはあなたが求めているものをクリアしていないので、 'VALUEB [i]を.setEnabled(偽)'また、より多くの詳細をあなたのポストを編集し使用していないのはなぜ –

答えて

0

あなたはsetClickableメソッドを使用して、ボタンを無効にすることができvalueB[i].setOnClickListener(null);

+0

はい、それは動作しますが、この配列ボタンを無効にするには別のボタンをクリックするとどうなりますか? –

+0

setTag()メソッドで一意のTAGを設定することによって、ボタンを区別することができます。 – Naitik

0

を使用してonclickのリスナーを無効にすることができます。

valueB[i].setClickable(false); 

たりすることもできます

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

別のボタンをクリックしてこの配列ボタンを無効にすると、それを作ることは可能ですか? –

関連する問題