所以我一直在尝试在我的 "RegisterActivity "上实现一个按钮,以切换到另一个 "LoginActivity"。AndroidStudio提供了这个非常好的管理器,我可以让一个Button对一个写好的方法做出反应。
为什么我的Button没有反应?
如果我使用这段代码,即使我不在Button的onClick属性中添加方法,Button也能工作。
Button signUpButton = (Button) findViewById(R.id.signUpButton);
signUpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RegisterActivity.this.switchToLoginPage();
}
});
public void switchToLoginPage() {
Intent goToLoginPage = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(goToLoginPage);
}
但如果我用这段代码 在Button的onClick属性上添加方法 他就不会工作了
public void switchToLoginActivity(View view) {
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
}
我甚至检查了两次和三次的.xml文件。
<Button
android:id="@+id/signUpButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="switchToLoginActivity"
android:text="@string/sign_up_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passwordTextField"
app:layout_constraintVertical_bias="0.5" />
谁能帮帮我?
你正在设置onClick监听器 signUpButton
两次,一次在java代码中。
signUpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RegisterActivity.this.switchToLoginPage();
}
});
还有在XML中
android:onClick="switchToLoginActivity"
当你在XML中这样做的时候 当你点击按钮的时候,switchToLoginActivity方法就会被调用。
你应该移除你在java代码中通过setOnClickListener设置的clickListener,或者移除 android:onClick="switchToLoginActivity"
和 switchToLoginActivity
方法。
删除这段代码。
signUpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RegisterActivity.this.switchToLoginPage();
}
});
保留这个方法
public void switchToLoginActivity(View view) {
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
}
看看会发生什么