Java 多个活动和按钮?

Java 多个活动和按钮?,java,android,button,android-activity,Java,Android,Button,Android Activity,我想在单击按钮后制作按钮,然后转到其他活动? 问题是只有第一个按钮起作用了 public类主扩展活动{ @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); 按钮PageOneButton=(按钮)findViewById(R.id.btnPageOne); PageOneButton.setOnClickListener(新视图

我想在单击按钮后制作按钮,然后转到其他活动? 问题是只有第一个按钮起作用了

public类主扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮PageOneButton=(按钮)findViewById(R.id.btnPageOne);
PageOneButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
Intent myIntent=newintent(v.getContext(),PageOne.class);
v、 getContext().startActivity(myIntent);
按钮页面二=(按钮)findViewById(R.id.btnPageTwo);
PageTwoButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
Intent myIntent=newintent(v.getContext(),PageTwo.class);
v、 getContext().startActivity(myIntent);
}
{}
});
}
});
}
}

如果您认为这是因为您的大多数代码都在第一个onclick侦听器的范围内关闭,请尝试以下操作

Button PageOneButton = (Button) findViewById(R.id.btnPageOne);
PageOneButton.setOnClickListener(new View.OnClickListener(){


    public void onClick(View v) {
        Intent myIntent = new Intent(Main.this, PageOne.class);
        startActivity(myIntent);

});


Button PageTwoButton = (Button) findViewById(R.id.btnPageTwo);
PageTwoButton.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v) {
        Intent myIntent = new Intent(Main.this, PageTwo.class);
        startActivity(myIntent);

});
使用
v.getContext()
应该可以,这正是我通常的做法,因为活动本身确实是一个有效的上下文。我想这对我来说更容易理解

编辑:

作为对代码当前状态的澄清。只有在按下第一个按钮后,才为第二个按钮分配onClickListener。但是,由于第一个按钮将应用程序带到一个新的活动中,固有地破坏了主活动,所以第二个按钮永远不会有机会到达它的监听器


希望这是有意义的,不过上面的代码应该可以解决这个问题。

您的代码中目前有几个问题。第一个问题是,您的第二个按钮是在第一个按钮的声明中定义的。下一个问题是将第二个OnClickListener设置为错误命名的按钮。您输入了一个拼写错误,并将PageTwo改为Button(您可能希望根据第一个按钮将其称为PageTwoButton),然后将OnClickListener改为PageTwoButton。由于您还使用了多个按钮,因此使用GroupOnClickListener会更干净、更高效。我可能还建议在设置意图时使用“this”而不是“v.getContext()”。将代码更改为这样:

Button PageOneButton = (Button) findViewById(R.id.btnPageOne);
Button PageTwoButton = (Button) findViewById(R.id.btnPageTwo);
PageOneButton.setOnClickListener(addGroupOnClickListener);
PageTwoButton.setOnClickListener(addGroupOnClickListener);    

private OnClickListener addGroupOnClickListener = new OnClickListener() {
    public void onClick(View v) {
        if (v == PageOneButton) {
            Intent myIntent = new Intent(Main.this, PageOne.class);
            startActivity(myIntent);
        } else if (v == PageTwoButton) {
            Intent myIntent = new Intent(Main.this, PageTwo.class);
            startActivity(myIntent);
        }  
   }
};
希望这有帮助

两个字:代码缩进

如果您正确缩进代码,您会注意到您正在第一个按钮的侦听器中设置OnClickListener。正如其他人已经建议的那样,把它移到你的第一个听众之外

另外还有一对{},这是多余的


另外,@edwoollard注意到,对于第二个按钮,您使用了两个不同的名称,PageTwo和PageTwoButton。记住这一点,除非是打字错误。

会发生什么?Logcat输出?作为答案寻址代码缩进的额外信息,eclipse中自动缩进的快捷方式是ctrl+shift+f,如果您使用的是IDE的话。+1,但请修复第二个按钮名称,@edwoollard注意到:)@Melquiades修复:)只需从问题中复制/粘贴即可