I am logging in with Google authentication. It will start an intent to another Java. In this Fragment I have a Sign out-button, but every time I want to sign out, the app crashes. Can you guys help me? :)
The Error message I am getting is:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context com.google.android.gms.common.api.GoogleApiClient.getContext()' on a null object reference
Code:
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) {
// ...
}
});
}
}
答案 0 :(得分:3)
需要初始化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();
}