2014-03-03 59 views
1

這是我的班級代碼;我意識到這是一大塊代碼,但我覺得它與我的問題有關。爲什麼我無法將數組中的視圖分配給偵聽器?

我有一組開關和那些開關被放入的數組。

我的問題是;當我嘗試將這些數組分配給onCheckedChanged監聽器時,它們返回nullpointerexception。

但是;當測試與

for(int i = 0; i<9;i++){ 
    if(whateverArrayImTesting[i] == null){ 
     Log.d(TAG, "NULL AT:" + i); 
    } 
} 

我的開關都沒有返回null;所以我不確定爲什麼我不能將它們分配給聽衆?

package com.example.ioiorun; 

import ioio.lib.api.exception.ConnectionLostException; 
import ioio.lib.spi.Log; 
import android.R.bool; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.CompoundButton; 
import android.widget.CompoundButton.OnCheckedChangeListener; 
import android.widget.ProgressBar; 
import android.widget.Switch; 
import android.widget.TableLayout; 
import android.widget.TextView; 
import android.support.v4.app.Fragment; 

public class digitalFragment extends Fragment { 
    String TAG; 
    // Declare all the UI Variables 
    TableLayout centralDigitalTable; 
    View digitalfragmentview; 

    Switch digitalIO0Mode; 
    Switch digitalIO1Mode; 
    Switch digitalIO2Mode; 
    Switch digitalIO3Mode; 
    Switch digitalIO4Mode; 
    Switch digitalIO5Mode; 
    Switch digitalIO6Mode; 
    Switch digitalIO7Mode; 
    Switch digitalIO8Mode; 
    Switch digitalIO9Mode; 

    Switch digitalIO0Power; 
    Switch digitalIO1Power; 
    Switch digitalIO2Power; 
    Switch digitalIO3Power; 
    Switch digitalIO4Power; 
    Switch digitalIO5Power; 
    Switch digitalIO6Power; 
    Switch digitalIO7Power; 
    Switch digitalIO8Power; 
    Switch digitalIO9Power; 

    Switch digitalInput0Power; 
    Switch digitalInput1Power; 
    Switch digitalInput2Power; 
    Switch digitalInput3Power; 

    TextView digitalIO0VoltageText; 
    TextView digitalIO1VoltageText; 
    TextView digitalIO2VoltageText; 
    TextView digitalIO3VoltageText; 
    TextView digitalIO4VoltageText; 
    TextView digitalIO5VoltageText; 
    TextView digitalIO6VoltageText; 
    TextView digitalIO7VoltageText; 
    TextView digitalIO8VoltageText; 
    TextView digitalIO9VoltageText; 

    TextView digitalInput0VoltageText; 
    TextView digitalInput1VoltageText; 
    TextView digitalInput2VoltageText; 
    TextView digitalInput3VoltageText; 

    ProgressBar digitalIO0VoltageProgress; 
    ProgressBar digitalIO1VoltageProgress; 
    ProgressBar digitalIO2VoltageProgress; 
    ProgressBar digitalIO3VoltageProgress; 
    ProgressBar digitalIO4VoltageProgress; 
    ProgressBar digitalIO5VoltageProgress; 
    ProgressBar digitalIO6VoltageProgress; 
    ProgressBar digitalIO7VoltageProgress; 
    ProgressBar digitalIO8VoltageProgress; 
    ProgressBar digitalIO9VoltageProgress; 

    ProgressBar digitalInput0VoltageProgress; 
    ProgressBar digitalInput1VoltageProgress; 
    ProgressBar digitalInput2VoltageProgress; 
    ProgressBar digitalInput3VoltageProgress; 

    ProgressBar[] digitalInputVoltageProgressArray = new ProgressBar[4]; 
    ProgressBar[] digitalIOVoltageProgressArray = new ProgressBar[10]; 
    Switch[] digitalIOModeSwitchArray = new Switch[10]; 
    Switch[] digitalIOPowerSwitchArray = new Switch[10]; 
    TextView[] digitalIOVoltageTextArray = new TextView [10]; 
    Switch[] digitalInputPowerSwitchArray = new Switch [4]; 
    TextView[] digitalInputVoltageTextArray = new TextView[4]; 


    Context superContext; 

    public View onCreateView(LayoutInflater viewInflation, ViewGroup container, 
      Bundle SavedInstantState) { 
     superContext = getActivity().getApplicationContext(); 
     digitalfragmentview = viewInflation.inflate(
       R.layout.digitalfragment_page, container, false); 

     digitalIO0Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio0mode); 
     digitalIO1Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio1mode); 
     digitalIO2Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio2mode); 
     digitalIO3Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio3mode); 
     digitalIO4Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio4mode); 
     digitalIO5Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio5mode); 
     digitalIO6Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio6mode); 
     digitalIO7Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio7mode); 
     digitalIO8Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio8mode); 
     digitalIO9Mode = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio9mode); 

     digitalIO0Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio0power); 
     digitalIO1Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio1power); 
     digitalIO2Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio2power); 
     digitalIO3Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio3power); 
     digitalIO4Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio4power); 
     digitalIO5Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio5power); 
     digitalIO6Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio6power); 
     digitalIO7Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio7power); 
     digitalIO8Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio8power); 
     digitalIO9Power = (Switch) digitalfragmentview 
       .findViewById(R.id.digitalio9power); 

     digitalIO0VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio0voltage); 
     digitalIO1VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio1voltage); 
     digitalIO2VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio2voltage); 
     digitalIO3VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio3voltage); 
     digitalIO4VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio4voltage); 
     digitalIO5VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio5voltage); 
     digitalIO6VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio6voltage); 
     digitalIO7VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio7voltage); 
     digitalIO8VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio8voltage); 
     digitalIO9VoltageProgress = (ProgressBar) digitalfragmentview 
       .findViewById(R.id.digitalio9voltage); 

     digitalIO0VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio0voltagetext); 
     digitalIO1VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio1voltagetext); 
     digitalIO2VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio2voltagetext); 
     digitalIO3VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio3voltagetext); 
     digitalIO4VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio4voltagetext); 
     digitalIO5VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio5voltagetext); 
     digitalIO6VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio6voltagetext); 
     digitalIO7VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio7voltagetext); 
     digitalIO8VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio8voltagetext); 
     digitalIO9VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalio9voltagetext); 

     digitalInput0VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalinput0voltagetext); 
     digitalInput1VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalinput1voltagetext); 
     digitalInput2VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalinput2voltagetext); 
     digitalInput3VoltageText = (TextView) digitalfragmentview 
       .findViewById(R.id.digitalinput3voltagetext); 

     centralDigitalTable = (TableLayout) digitalfragmentview 
       .findViewById(R.id.digitalTable); 

     for (int i = 0; i < 9; i++) { 
      switch (i) { 
      case 0: 
       digitalInputVoltageProgressArray[0] = digitalInput0VoltageProgress; 
       digitalIOVoltageProgressArray[0] = digitalIO0VoltageProgress; 
       digitalInputPowerSwitchArray[0] = digitalInput0Power; 
       digitalIOModeSwitchArray[0] = digitalIO0Mode; 
       digitalIOPowerSwitchArray[0] = digitalIO0Power; 
       digitalIOVoltageTextArray[0] = digitalIO0VoltageText; 
       digitalInputVoltageTextArray[0] = digitalInput0VoltageText; 
       break; 
      case 1: 
       digitalInputVoltageProgressArray[1] = digitalInput1VoltageProgress; 
       digitalIOVoltageProgressArray[1] = digitalIO1VoltageProgress; 
       digitalInputPowerSwitchArray[1] = digitalInput1Power; 
       digitalIOModeSwitchArray[1] = digitalIO1Mode; 
       digitalIOPowerSwitchArray[1] = digitalIO1Power; 
       digitalIOVoltageTextArray[1] = digitalIO1VoltageText; 
       digitalInputVoltageTextArray[1] = digitalInput1VoltageText; 
       break; 
      case 2: 
       digitalInputVoltageProgressArray[2] = digitalInput2VoltageProgress; 
       digitalIOVoltageProgressArray[2] = digitalIO2VoltageProgress; 
       digitalInputPowerSwitchArray[2] = digitalInput2Power; 
       digitalIOModeSwitchArray[2] = digitalIO2Mode; 
       digitalIOPowerSwitchArray[2] = digitalIO2Power; 
       digitalIOVoltageTextArray[2] = digitalIO2VoltageText; 
       digitalInputVoltageTextArray[2] = digitalInput2VoltageText; 
       break; 
      case 3: 
       digitalInputVoltageProgressArray[3] = digitalInput3VoltageProgress; 
       digitalIOVoltageProgressArray[3] = digitalIO3VoltageProgress; 
       digitalInputPowerSwitchArray[3] = digitalInput3Power; 
       digitalIOModeSwitchArray[3] = digitalIO3Mode; 
       digitalIOPowerSwitchArray[3] = digitalIO3Power; 
       digitalIOVoltageTextArray[3] = digitalIO3VoltageText; 
       digitalInputVoltageTextArray[3] = digitalInput3VoltageText; 
       break; 
      case 4: 
       digitalIOVoltageProgressArray[4] = digitalIO4VoltageProgress; 
       digitalIOModeSwitchArray[4] = digitalIO4Mode; 
       digitalIOPowerSwitchArray[4] = digitalIO4Power; 
       digitalIOVoltageTextArray[4] = digitalIO4VoltageText; 
       break; 
      case 5: 
       digitalIOVoltageProgressArray[5] = digitalIO5VoltageProgress; 
       digitalIOModeSwitchArray[5] = digitalIO5Mode; 
       digitalIOPowerSwitchArray[5] = digitalIO5Power; 
       digitalIOVoltageTextArray[5] = digitalIO5VoltageText; 
       break; 
      case 6: 
       digitalIOVoltageProgressArray[6] = digitalIO6VoltageProgress; 
       digitalIOModeSwitchArray[6] = digitalIO6Mode; 
       digitalIOPowerSwitchArray[6] = digitalIO6Power; 
       digitalIOVoltageTextArray[6] = digitalIO6VoltageText; 
       break; 
      case 7: 
       digitalIOVoltageProgressArray[7] = digitalIO7VoltageProgress; 
       digitalIOModeSwitchArray[7] = digitalIO7Mode; 
       digitalIOPowerSwitchArray[7] = digitalIO7Power; 
       digitalIOVoltageTextArray[7] = digitalIO7VoltageText; 
       break; 
      case 8: 
       digitalIOVoltageProgressArray[8] = digitalIO8VoltageProgress; 
       digitalIOModeSwitchArray[8] = digitalIO8Mode; 
       digitalIOPowerSwitchArray[8] = digitalIO8Power; 
       digitalIOVoltageTextArray[8] = digitalIO8VoltageText; 
       break; 
      case 9: 
       digitalIOVoltageProgressArray[9] = digitalIO9VoltageProgress; 
       digitalIOModeSwitchArray[9] = digitalIO9Mode; 
       digitalIOPowerSwitchArray[9] = digitalIO9Power; 
       digitalIOVoltageTextArray[9] = digitalIO9VoltageText; 
       break; 
      } 
     } 

     for(int i = 0; i<digitalIOModeSwitchArray.length;i++){ 
      digitalIOModeSwitchArray[i].setOnCheckedChangeListener(new OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        // TODO Auto-generated method stub 
        //Log.d(TAG, "The button works for switch:" + buttonView.getText()); 
       } 
      }); 
     } 

     return digitalfragmentview; 
    } 

    // BEGIN VOLTAGE TEXT RELATED METHODS 

    public TextView getIOVoltageText(int index) { 
     TextView IOVoltageText = null; 
     for (int i = 0; i < digitalIOVoltageTextArray.length; i++) { 
      if (i == index) { 
       IOVoltageText = digitalIOVoltageTextArray[index]; 
      } 
     } 
     return IOVoltageText; 
    } 

    public void setIOVoltageText(int index, double voltage) { 
     for (int i = 0; i < digitalIOVoltageTextArray.length; i++) { 
      if (i == index) { 
       digitalIOVoltageTextArray[index].setText("Voltage: " 
         + String.valueOf(voltage)); 
      } 
     } 
    } 

    public TextView getInputVoltageText(int index) { 
     TextView InputVoltageText = digitalInputVoltageTextArray[index]; 

     return InputVoltageText; 
    } 

    public void setInputVoltageText(int index, double voltage) { 
     digitalInputVoltageTextArray[index].setText("Voltage: " 
       + String.valueOf(voltage)); 
    } 

    // END VOLTAGE TEXT RELATED METHODS 

    // BEGIN VOLTAGE PROGRESSBAR RELATED METHODS 
    public ProgressBar getIOProgressBar(int index) { 
     ProgressBar IOVoltageProgress = digitalInputVoltageProgressArray[index]; 
     return IOVoltageProgress; 
    } 

    public void setIOProgressBar(int index, double voltage) { 
     digitalIOVoltageProgressArray[index].setProgress((int) voltage); 
    } 

    public ProgressBar getInputProgressBar(int index) { 
     ProgressBar InputVoltageProgress = digitalInputVoltageProgressArray[index]; 
     return InputVoltageProgress; 
    } 

    public void setInputProgressBar(int index, double voltage) { 
     digitalInputVoltageProgressArray[index].setProgress((int) voltage); 
    } 

    // END VOLTAGE PROGRESSBAR RELATED METHODS 

    // BEGIN SWITCH RELATED METHODS 
    public Switch getIOPowerSwitch(int index) { 
     return digitalIOPowerSwitchArray[index]; 
    } 

    public void setIOPowerSwitch(int index, boolean status) { 
     digitalIOPowerSwitchArray[index].setActivated(status); 
    } 

    public Switch getInputPowerSwitch(int index) { 
     return digitalInputPowerSwitchArray[index]; 
    } 

    public void setInputPowerSwitch(int index, boolean status) { 
     digitalInputPowerSwitchArray[index].setActivated(status); 
    } 

    public Switch getIOModeSwitch(int index) { 
     return digitalIOModeSwitchArray[index]; 
    } 

    public void getIOModeSwitch(int index, boolean status) { 
     digitalIOModeSwitchArray[index].setActivated(status); 
    } 

    // END SWITCH RELATED METHODS 

    public TableLayout getCentralDigitalTable() { 
     return centralDigitalTable; 
    } 

    public void setCentralDigitalTable(TableLayout centralDigitalTable) { 
     this.centralDigitalTable = centralDigitalTable; 
    } 

    public View getDigitalFragmentView() { 
     return digitalfragmentview; 
    } 

    public void setDigitalFragmentView(View digitalfragmentview) { 
     this.digitalfragmentview = digitalfragmentview; 
    } 

} 

編輯1:

for(int i = 0; i<digitalIOModeSwitchArray.length;i++){ 
      digitalIOModeSwitchArray[i].setOnCheckedChangeListener(new OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        // TODO Auto-generated method stub 
        //Log.d(TAG, "The button works for switch:" + buttonView.getText()); 
       } 
      }); 
     } 

這是我指的是導致錯誤的循環。

回答

2

您忘記了初始化最後一個元素。

for (int i = 0; i < 9; i++) 

應該

for (int i = 0; i < 10; i++) 

,所以你會去從0到9,而不是從0到8

+0

,這只是一個測試,看看它們是空,是不相關的我正在談論的循環。參考onCreateView()中的循環;與onCheckedChangedListener。 – Tukajo

+0

我正在談論for循環封閉開關(在這裏你將對象分配給數組...) – MByD

+0

請參閱我的最新編輯 – Tukajo

相關問題