2010-09-13 44 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

相关问题