user3089464
user3089464

Reputation: 251

java.lang.NullPointerException - error when logout Android

I followed this tutorial (http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/) for creating member system with login and logout feature. The problem is when logout it doesn't work. I'm creating logout in Fragment Navigation Drawer Menu.

This My Activity.

public class HomeActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {

private static String TAG = HomeActivity.class.getSimpleName();

private Toolbar mToolbar;
private FragmentDrawer drawerFragment;

private SQLiteHandler db;
private SessionManager session;

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

    mToolbar = (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);


    drawerFragment = (FragmentDrawer)
            getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
    drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
    drawerFragment.setDrawerListener(this);

    // display the first navigation drawer view on app launch
    displayView(0);
}



private void displayView(int position) {
    Fragment fragment = null;
    String title = getString(R.string.app_name);
    switch (position) {
        case 0:
            fragment = new HomeFragment();
            title = getString(R.string.title_home);
            break;
        case 1:
            captureImage();
            break;
        case 2:
            fragment = new ReportsFragment();
            title = getString(R.string.title_reports);
            break;
        case 3:
            title = getString(R.string.title_settings);
            break;
        case 4:
            logoutUser();
            break;
        default:
            break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container_body, fragment);
        fragmentTransaction.commit();

        // set the toolbar title
        getSupportActionBar().setTitle(title);
    }
}


private void logoutUser() {
    session.setLogin(false);
    db.deleteUsers();
    // Launching the login activity
    Intent intent = new Intent(HomeActivity.this, LoginActivity.class);
    startActivity(intent);
    finish();
}
}

And this is error log.

FATAL EXCEPTION: main
java.lang.NullPointerException
        at com.company.report.activity.HomeActivity.logoutUser(HomeActivity.java:251)
        at com.company.report.activity.HomeActivity.displayView(HomeActivity.java:124)
        at com.company.report.activity.HomeActivity.onDrawerItemSelected(HomeActivity.java:99)
        at com.company.report.activity.FragmentDrawer$1.onClick(FragmentDrawer.java:79)
        at com.company.report.activity.FragmentDrawer$RecyclerTouchListener.onInterceptTouchEvent(FragmentDrawer.java:160)
        at android.support.v7.widget.RecyclerView.dispatchOnItemTouchIntercept(RecyclerView.java:1986)
        at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:2027)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1629)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1912)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
        at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
        at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1860)
        at android.view.View.dispatchPointerEvent(View.java:5721)
        at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2890)
        at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2466)
        at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
        at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2475)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

Upvotes: 0

Views: 239

Answers (1)

Jens
Jens

Reputation: 69470

Looks like sessionand db are never initialized. Initialize it and the error will be gone.

Upvotes: 2

Related Questions