【问题标题】:Android Studio Button onClick Listener won't workAndroid Studio 按钮 onClick 侦听器不起作用
【发布时间】:2020-08-17 10:02:05
【问题描述】:

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

onClick 按钮

为什么我的 Button 没有反应?

如果我使用此代码 sn-p,即使我没有将方法添加到 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】:

    您为signUpButton 设置了两次 onClick 侦听器,一次在 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 方法。

    【讨论】:

      【解决方案2】:

      删除这段代码:

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

      看看会发生什么。

      【讨论】:

        猜你喜欢
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-17
        • 2011-11-27
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        相关资源
        最近更新 更多