Google 在 XML 中使用 onClick 时 SignInButton 不会触发
Google SignInButton does not fire when using onClick in XML
我有一个只包含一个按钮的简单布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="signIn"/>
</RelativeLayout>
在我的 MainActivity 中,我有这个方法:
public void signIn(View v) {
Toast.makeText(getApplicationContext(), "Button clicked", Toast.LENGTH_LONG).show();
}
但是没有任何反应。我也尝试添加:
android:clickable="true"
但是没有用。如果在按钮上设置点击侦听器,它将起作用。如何直接从布局文件中设置onClick?
SignInButton 是扩展 View 组件的自定义视图。 doc 表示直接在您的 activity 或片段中使用 setOnClickListener
。
看SignInButton source code。 onClick
被覆盖,需要 mClientListener
才能工作。设置 mClientListener
的唯一方法是使用 setOnClickListener
.
只需在您的 activity 或片段中直接使用 OnClick 侦听器:
signInButton = (SignInButton)findViewById(R.id.sign_in_button);
signInButton.setOnClickListener(this);
OnClickListener 工作正常。我试过了。
XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:onClick="signInButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
/>
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Java代码:
public void signInButton(View v) {
Toast.makeText(getApplicationContext(), "Button clicked", Toast.LENGTH_LONG).show();
}
我有一个只包含一个按钮的简单布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="signIn"/>
</RelativeLayout>
在我的 MainActivity 中,我有这个方法:
public void signIn(View v) {
Toast.makeText(getApplicationContext(), "Button clicked", Toast.LENGTH_LONG).show();
}
但是没有任何反应。我也尝试添加:
android:clickable="true"
但是没有用。如果在按钮上设置点击侦听器,它将起作用。如何直接从布局文件中设置onClick?
SignInButton 是扩展 View 组件的自定义视图。 doc 表示直接在您的 activity 或片段中使用 setOnClickListener
。
看SignInButton source code。 onClick
被覆盖,需要 mClientListener
才能工作。设置 mClientListener
的唯一方法是使用 setOnClickListener
.
只需在您的 activity 或片段中直接使用 OnClick 侦听器:
signInButton = (SignInButton)findViewById(R.id.sign_in_button);
signInButton.setOnClickListener(this);
OnClickListener 工作正常。我试过了。
XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:onClick="signInButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
/>
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Java代码:
public void signInButton(View v) {
Toast.makeText(getApplicationContext(), "Button clicked", Toast.LENGTH_LONG).show();
}