繁体   English   中英

多个活动和按钮?

[英]Multiple activities and buttons?

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

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); 
                    }
                    {}
                });
            }
        });
    }
}

认为这是因为大多数代码都在第一个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,固有地破坏了主要活动,第二个按钮永远不会有机会到达它的onClickListener。

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

您的代码中目前存在一些问题。 第一个问题是你的第二个按钮是在第一个按钮的声明中定义的。 下一个问题是您将第二个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);
        }  
   }
};

希望这可以帮助!

两个字:

代码缩进

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM