[英]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.