0

我不知道为什么这段代码会抛出 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;
    }
}
4

2 回答 2

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

于 2012-07-07T12:07:36.463 回答
0

将点击事件的监听器添加为

public class ProgramExamActivity extends Activity implements OnClickListener{

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

btn1.setOnClickListener(ProgramExamActivity.this);
于 2012-07-07T12:15:30.807 回答