Google 로그인을 사용하여 사용자에 로그인합니다. 다른 활동에서 로그인을 처리하고 다른 활동에 로그 아웃 버튼이 있습니다.Google+ 로그인 메소드가 nullpointer 예외를 반환합니다.
private void signOut() {
if(mGoogleApiClient.isConnected()){
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
loadloginActivity();
}
});
}
}
위의 방법에서 사용자를 로그 아웃하고 사용자를 로그인 활동으로 안내하는 기능을 실행하고 있습니다. 그러나 나가 signout 단추를 누를 때, 나는 뒤에 오는 nullpointer 과실을 얻고있다.
09-22 16:42:29.660 4459-4459/com.myapplication.tester E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapplication.tester, PID: 4459
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.common.api.GoogleApiClient.isConnected()' on a null object reference
at com.myapplication.tester.BaseActivity.signOut(BaseActivity.java:190)
at com.myapplication.tester.BaseActivity.onOptionsItemSelected(BaseActivity.java:180)
at android.app.Activity.onMenuItemSelected(Activity.java:2948)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:406)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69)
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:203)
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:759)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:127)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
누군가가이 문제를 해결할 수 있다면 기쁘게 생각합니다.
편집 - 나는 또한 GoogleApiClient 연결을 확인하지 않고 시도하지만, 난 여전히 응용 프로그램 클래스의 mGoogleApiClient를 선언 nullpointer 오류
public abstract class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private Toolbar mActionBarToolbar;
private DrawerLayout mDrawerLayout;
protected NavigationView mNavigationView;
private ActionBarDrawerToggle mToggle;
//Initialized mGoogleApiClient
GoogleApiClient mGoogleApiClient;
private GoogleApiClient client;
protected boolean useToolbar() {
return true;
}
protected boolean useDrawerToggle() {
return true;
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
getActionBarToolbar();
setupNavDrawer();
}//end setContentView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
private void signOut() {
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
loadloginActivity();
}
});
}
}
어디에서'mGoogleApiClient'를 초기화합니까? – Egor
클래스 시작 부분에서 onCreate 메서드보다 먼저 초기화되었습니다. 코드에 추가했습니다. 감사. – Aksh
초기화되지 않았습니다. 방금 선언되었으며 기본값은 null입니다. – shmosel