Android Studio Button onClick Listener无法工作

问题描述 投票:0回答:1

所以我一直在尝试在我的 "RegisterActivity "上实现一个按钮,以切换到另一个 "LoginActivity"。AndroidStudio提供了这个非常好的管理器,我可以让一个Button对一个写好的方法做出反应。

onClick-ButtononClick-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" />

谁能帮帮我?

android button onclick listener
1个回答
0
投票

你正在设置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 方法。


0
投票

删除这段代码。

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

看看会发生什么

© www.soinside.com 2019 - 2024. All rights reserved.