Я успешно выполнил руководство Accessing Google APIs.SignInButton in Fragment - и onClick никогда не вызывается в MainActivity
После этого я решил перенести часть кода в фрагменте:
<FrameLayout
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/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clickable="true"
android:onClick="googleLogin" />
</FrameLayout>
И в MainActivity я переехал создание объекта GoogleApiClient из onCreate()
в googleLogin()
метода:
public void googleLogin(View v) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.build();
mGoogleApiClient.connect();
}
Однако метод никогда не называется (как я вижу в отладчике).
Что здесь не так, это ошибка (игнорируя атрибут XML) в текущей версии SignInButton?
Попробуйте переместить 'googleLogin()' в класс фрагментов. Поскольку событие Click принадлежит 'SignInButton', которое находится в этом макете. –
Я пробовал, но это не помогло (возможно, потому, что методы 'onClick' обычно вызываются не в Fragment, а в родительском Activity). –
Вы можете попробовать: добавьте 'реализует OnClickListener' в ваш фрагмент И переименуйте свой метод так: @Override public final void onClick (final View v)' (после перемещения его в фрагменте) –