I use the launch page to log in to Google. When a user has several accounts ... after they choose which account they want to log in with, I try to start the main application activity, but for some reason onActivityResult never called in my fragment.
Im Activity, I call onActivityResult and let it call super so that the fragment can handle it, but it never fires.
Any suggestions?
Here is the fragment in question:
package com.garciaericn.goodeats.login; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.content.IntentSender; import android.os.Bundle; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import com.garciaericn.goodeats.R; import com.garciaericn.goodeats.helpers.CheckConnection; import com.garciaericn.goodeats.main.FavoritesActivity; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.SignInButton; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.plus.Plus; public class LoginFragment extends Fragment implements View.OnClickListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { public static final String TAG = "com.garciaericn.goodeats.login.LoginFragment.TAG"; private static final int RC_SIGN_IN = 0; private static final int RC_LOGGED_IN = 1034553; public static final int RC_SIGN_OUT = 34458392; private GoogleApiClient mGoogleApiClient; private boolean mIntentInProgress; private ConnectionResult mConnectionResult; private boolean mSignInClicked; private boolean mSignedIn; private CheckConnection checkConnection; public LoginFragment() { } public static LoginFragment getInstance() { return new LoginFragment(); } private void signOut() { if (mGoogleApiClient.isConnected()) { Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); mGoogleApiClient.disconnect(); mGoogleApiClient.connect(); mIntentInProgress = false; mSignInClicked = false; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); checkConnection = new CheckConnection(getActivity()); setHasOptionsMenu(true); mGoogleApiClient = new GoogleApiClient.Builder(getActivity()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(Plus.API) .addScope(Plus.SCOPE_PLUS_LOGIN) .build(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_login, container, false); SignInButton signInButton = (SignInButton) view.findViewById(R.id.g_plus_login); signInButton.setSize(SignInButton.SIZE_WIDE); signInButton.setOnClickListener(this); return view; } @Override public void onStart() { super.onStart(); mGoogleApiClient.connect(); } @Override public void onStop() { super.onStop(); if (mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_sign_out: if (mGoogleApiClient.isConnected()) { Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); mGoogleApiClient.disconnect(); mGoogleApiClient.connect(); } return true; } return super.onOptionsItemSelected(item); } @Override public void onClick(View v) { checkConnection.isConnected(); switch (v.getId()) { case R.id.g_plus_login: if (!mGoogleApiClient.isConnected()) { mSignInClicked = true; resolveSignInError(); } break; default:
source share