2016-05-12 3 views
0

Я пытаюсь внедрить вход и выход Google для своего приложения. Кажется, что выход из системы приводит к следующей ошибке; java.lang.RuntimeException: Не удается запустить активность. ComponentInfo: java.lang.IllegalStateException: GoogleApiClient еще не подключен.java.lang.RuntimeException: Не удалось запустить активность ComponentInfo: java.lang.IllegalStateException: GoogleApiClient еще не подключен

LogoutActivity:

public class LogoutActivity_new extends AppCompatActivity implements 
    GoogleApiClient.OnConnectionFailedListener{ 
private GoogleApiClient mGoogleApiClient; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // SocialLogin.signOut(); 

    // GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN); 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API) 
      .build(); 
    signOut(); 

} 

private void signOut() { 
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        // [START_EXCLUDE] 
        //updateUI(false); 
        // [END_EXCLUDE] 
       } 
      }); 
} 
@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 
} 

Pls кто-то может помочь

+0

попробовать этот ответ на стек переполнение ............ http: //stackoverflow.com/a/29440779/3678308 –

ответ

0

Вы, вероятно, нужно вызвать метод connect на вашем mGoogleApiClient первый и ждать, пока она не соединяется перед вызовом signOut. Хорошим местом для этого является onResume метод

0

Вы не можете вызвать signout() сразу после создания mGoogleApiClient, так как вы не знаете, подключен ли клиент (что почти невозможно, как скорость выполнения кода).

Этот метод можно использовать, когда вы знаете, что клиент уже подключился к googleApi, для справки, когда вызывается onConnected().

Пример:

@Override 
void OnConnected(Bundle bundle) 
{ 
    signout(); 
} 

OnConnected() вызывается GoogleAPI, когда клиент подключается сам.

Вы также можете установить некоторое логическое поле, как «подключен» по истине в методе OnConnected, а затем вы можете проверить его в других местах в коде, чтобы позвонить SignOut(), как:

if(connected) signout(); 
+0

извините, я немного смущен, может у вас просьба указать пример кода – PersianBlue

+0

Неправильно интерпретируется ваш код. Теперь я дал правильный ответ с небольшими примерами. – bartexsz

+0

Но он не переопределяет void OnConnected (комплект Bundle) – PersianBlue