0

私はGoogle認証でログインしています。それは別のJavaへのインテントを開始します。このフラグメントでは、ログアウトボタンがありますが、ログアウトするたびにアプリがクラッシュします。 あなたは私を助けることができますか?私は取得しています:)別のフラグメントでGoogle認証からログアウトするにはどうすればよいですか?

エラーメッセージは次のとおりです。

のjava.lang.NullPointerException:仮想メソッドを呼び出そうと「android.content.Context com.google.android.gms.common.api.GoogleApiClient nullのオブジェクト参照の.getContext()」

コード:

public class Setttings extends Activity { 

private Button msigno; 
private FirebaseAuth mAuth; 

private GoogleApiClient mGoogleApiClient; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.settings); 


    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int width = dm.widthPixels; 
    int height = dm.widthPixels; 

    getWindow().setLayout((int)(width*0.95),(int) (height*0.93)); 

    msigno = (Button) findViewById(R.id.signout); 

    msigno.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mAuth = FirebaseAuth.getInstance(); 

      switch (v.getId()) { 
       // ... 
       case R.id.signout: 
        signOut(); 
        break; 
       // ... 

      } 
      mAuth.signOut(); 

      // Google sign out 
      Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
        new ResultCallback<Status>() { 
         @Override 
         public void onResult(@NonNull Status status) { 
         } 
        }); 
      Intent intent2 = new Intent(Setttings.this, MainActivity.class); 
      startActivity(intent2); 

     } 
    }); 



} 
private void signOut() { 
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        // ... 
       } 
      }); 
} 
} 

答えて

1

は、サインアウトするAPIクライアントを初期化する必要があります。

@Override 
protected void onStart() { 
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .build(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 
    mGoogleApiClient.connect(); 
    super.onStart(); 
} 
関連する問題