多个活动和按钮?

时间:2014-01-22 18:26:20

标签: java android button android-activity

点击按钮后,我想制作按钮我去另一个活动? 问题是只有第一个按钮正常工作!

public class Main extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button PageOneButton = (Button) findViewById(R.id.btnPageOne);
        PageOneButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent myIntent = new Intent(v.getContext(), PageOne.class);
                v.getContext().startActivity(myIntent);

                Button PageTwo = (Button) findViewById(R.id.btnPageTwo);
                PageTwoButton.setOnClickListener(new View.OnClickListener() {   
                    public void onClick(View v) {
                        Intent myIntent = new Intent(v.getContext(), PageTwo.class);
                        v.getContext().startActivity(myIntent); 
                    }
                    {}
                });
            }
        });
    }
}

3 个答案:

答案 0 :(得分:1)

认为这是因为大多数代码都是在第一个onClickListener的范围内关闭的,请尝试这样的事情。

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()应该没问题,这就是我通常会做的事情,因为Activity本身确实是一个有效的上下文。我想这对我来说似乎更具可读性。

修改:

正如对代码当前状态的澄清一样。仅在按下第一个按钮后,才会为第二个按钮分配onClickListener。但是,由于第一个按钮将应用程序带到一个新的Activity,固有地破坏了Main Activity,第二个按钮永远不会有机会到达onClickListener。

希望它有意义,但上面的代码应该解决问题。

答案 1 :(得分:1)

您的代码中目前存在一些问题。第一个问题是你的第二个按钮是在第一个按钮的声明中定义的。下一个问题是您将第二个OnClickListener设置为错误命名的按钮。您已经输入了一个拼写错误,而不是PageTwo,你称之为Button(可能你想按照第一个Button调用它的PageTwoButton),然后将OnClickListener设置为PageTwoButton。看到你也在使用多个按钮,使用GroupOnClickListener会更清晰,更有效。在设置你的Intents时,我可能还建议使用'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);
        }  
   }
};

希望这有帮助!

答案 2 :(得分:0)

两个字:

代码缩进

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

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

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

相关问题