2010-09-13 49 views
0

爲什麼我要[在setOnClickListener上收到空錯誤?
R.layout.dataentry是ContentView。它有addRecord(一個按鈕),它加載並顯示正常。 看起來好像R.id.addRecord在查找調試器時獲取ID)。 我確信它與ContentView未被正確加載有關,導致在我嘗試添加監聽器時出現空指針異常,但我嘗試了多種方式預先加載它(這裏,更早),而且我不能弄清楚如何去做。我想我寧願將所有視圖都緩存起來,以便可以儘早添加偵聽器。有人可以幫忙嗎?爲什麼我一直在setOnClickListener上收到空例外

謝謝。

 exercise = (RadioGroup)this.findViewById(R.id.exerciseType); 
     addRecord = (Button)this.findViewById(R.id.addRecord); 
     amount = (TextView)this.findViewById(R.id.amount); 
     datePerformed = (DatePicker)this.findViewById(R.id.datePerfomed); 

public void loadAddEntry() { 
      setContentView(R.layout.dataentry); 
      addRecord.setOnClickListener(
       new View.OnClickListener(){ 
        public void onClick(View view) { 
         addRecordClicked(); 
        } 

        ;}); 

      } 

回答

1

你是做了錯誤的方式...你有這樣的:

exercise = (RadioGroup)this.findViewById(R.id.exerciseType); 

我的猜測是對的onCreate方法,和以前的你應該有另一個setContentView(R.layout.anotherstuff);這些行。然後,你有一個loadAddEntry方法setContentView(R.layout.dataentry);。所以,在這裏你有一個問題:如果你已經定義了另一個contentview,你爲什麼重新定義它?

+0

我正在重新定義它,因爲它是第二種形式。首先是登錄表單,然後我想使用「添加條目」表單。第一個加載好,提交好,等等。第二個加載好,直到我添加關於ClickListener的部分。除非有我不明白的地方,否則它的創建方式似乎沒有問題。我應該這樣做嗎? – Jeff 2010-09-13 21:50:04

+0

你是指那些在不同的活動?你能否粘貼整個活動代碼? – Cristian 2010-09-13 22:28:59

+0

爲了簡單起見,他們處於相同的活動狀態。我把我所有的代碼放進去。 – Jeff 2010-09-14 01:30:03

相關問題