2012-07-07 61 views
0

我不知道为什么这段代码抛出一个nullPointerException。我没有写这部分代码,而且这个员工很新。我尽我所能,但无法找到答案。预写的android代码抛出nullPointerException

public class ProgramExamActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main); 
    setTitle("Screen #1"); 
} 
public void onClick(View v) {  
    switch(v.getId()) {  
     case R.id.btn2: 
       setContentView(R.layout.screen2); 
       setTitle("Screen #2"); 
       break; 
    } 
} 
+1

发布例外日志..与您的问题。 – user370305 2012-07-07 12:05:10

+0

日志可以帮助更多的帮手:) – AAnkit 2012-07-07 12:07:29

+0

尽管代码写得不好,有些东西应该避免。 – AAnkit 2012-07-07 12:08:50

回答

2

首先,这

setContentView(R.layout.screen2); 
setTitle("Screen #2"); 

你不能,你不应该调用其再次。

第二,如果你想使用OnClickListener,你需要注册一些widget,并在你的代码中有任何widget

在你的情况你的类需要实现View.OnClickListener,如果你不希望与监听工作匿名类

public class Program... extends Activity implements View.OnClickListener { ... } 

然后,你需要这样的方式来注册它

Button btn = (Button) findViewById(R.id.btn2); 
btn.setOnClickListener(this); 

注意:如果您想要开始具有不同标题和内容的另一个Activity,则必须使用Intents并致电startActivity()

更多关于Intents并且有教程Android: How to switch between Activities。点击事件的

+0

@Enoras >>写得很好的答案,我想在这里再提一点,因为Deceiver建议不要设置contentView两次。实际上你应该开始一个新的活动,而不是设置新的内容视图。并在新活动中显示您的布局。 – AAnkit 2012-07-07 12:16:15

+0

只是我更新了答案:-) – Sajmon 2012-07-07 12:17:55

+0

谢谢.upvoted ... :)。 – AAnkit 2012-07-07 12:19:13

0

添加监听器

public class ProgramExamActivity extends Activity implements OnClickListener{ 

然后,注册此侦听您的组件。 假设你想添加点击你的任何按钮,如btn1。 然后在OnCreate中添加代码

btn1.setOnClickListener(ProgramExamActivity.this); 
+0

在8分钟前已经给出了相同的答案,如果答案中没有新的和独特的,请不要发布重复的答案请避免发布。 – AAnkit 2012-07-07 12:18:01

+0

好吧,我标记和UPVOTED“欺骗”的答案。这是我的错误,我没有读完整个答案。 – 2012-07-07 12:20:55

相关问题