2012-08-14 58 views
0

當我嘗試爲我創建的按鈕實現onclicklistener時,我不斷收到空指針異常。onclicklistener爲按鈕數組提供空指針

Button setHighBtn[] = null; 
    Button setLowBtn[]=null; 
    TextView tv[] = new TextView[oNumber]; 
    for (int i=0;i<oNumber;i++){ 
     tv[i] = new TextView(this); 
     tv[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     tv[i].setText(oName[i]); 
     tv[i].setTextSize(20); 
     //tv[i].setLayoutParam) 
     layout.addView(tv[i]); 
     if (capability[i]==0){ 
      LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    
      inflater.inflate(R.layout.full_capabilities, layout); 
      setHighBtn[i]=(Button)findViewById(R.id.setHigh); 
      setHighBtn[i]=(Button)findViewById(R.id.setLow); 
      setHighBtn[i].setOnClickListener(this);        
      setLowBtn[i].setOnClickListener(this); 
     }else{ 
      setHighBtn[i]=null;       
      setLowBtn[i]=null; 
     } 
    } 

回答

0

我認爲這是一個複製粘貼錯誤。你寫道:

setHighBtn[i]=(Button)findViewById(R.id.setHigh); 
setHighBtn[i]=(Button)findViewById(R.id.setLow); //This is supposed to be setLowBtn[i] 

然後你設置一個偵聽器到setLowBtn這還沒有初始化。編輯它到:

setHighBtn[i]=(Button)findViewById(R.id.setHigh); 
setLowBtn[i]=(Button)findViewById(R.id.setLow); 
+0

雅你的權利。我的錯。 – zms6445 2012-08-14 22:22:11

+0

很高興我能幫到你:) – iTurki 2012-08-14 22:22:48

0

你在寫這個的時候期待什麼?

Button setHighBtn[] = null; 
Button setLowBtn[]=null; 
+0

那不是問題。在我添加這些行之前,它甚至沒有工作。我爲循環的一些迭代添加了null原因,它不會創建這些按鈕,所以我需要用null填充數組中的那些點。 – zms6445 2012-08-14 22:13:59