lindha dwi ambarwati
lindha dwi ambarwati

Reputation: 31

NullPointerException in Fragment Manager

Can anyone please help me solve this exception? This is the code of fragment manager and how to show my fragment in activity

private void selectItem(int position) {
    Fragment fragment = null;
    // minus 1 because we have header that has 0 position
    if (position < 1) { // because we have header, we skip clicking on it
        return;
    }
    switch (position) {
        case 2:
            fragment = new TextViewsFragment();
            break;
        case 3:
            //fragment = new ProfilFragment();
            break;
        case 4:
            //fragment = new AttendanceFragment();
            break;
        case 5:
            //fragment = new PermitFragment();
            break;
        case 6:
            //Logout();
            break;
        default:
            break;
    }
    commitFragment(fragment);

    mDrawerList.setItemChecked(position, true);
    setTitle(mDrawerItems.get(position - 1).getTitle());
    mDrawerLayout.closeDrawer(mDrawerList);
}
private class CommitFragmentRunnable implements Runnable {

    private Fragment fragment;

    public CommitFragmentRunnable(Fragment fragment) {
        this.fragment = fragment;
    }

    @Override
    public void run() {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
    }
}

public void commitFragment(Fragment fragment) {
    // Using Handler class to avoid lagging while
    // committing fragment in same time as closing
    // navigation drawer
    mHandler.post(new CommitFragmentRunnable(fragment));
}

the exception point to .replace(R.id.content_frame, fragment).commit();

Exception getting :

java.lang.NullPointerException
            at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:416)
            at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:451)
            at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:443)
            at com.csform.android.uiapptemplate.LeftMenusActivity$CommitFragmentRunnable.run(LeftMenusActivity.java:221)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:149)
            at android.app.ActivityThread.main(ActivityThread.java:5268)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)

i tried to call one fragment into my activity by choose the left menu, but it get exception null pointer.

Upvotes: 0

Views: 215

Answers (1)

Randyka Yudhistira
Randyka Yudhistira

Reputation: 3652

refer to Mamata Gelanee's comment :

private FragmentManager fragmentManager;
    @Override
    public void onCreate(Bundle savedInstanceState) {
      ......
      fragmentManager = getSupportFragmentManager();
    }

Then in your runnable :

    @Override
    public void run() {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
    }

Upvotes: 1

Related Questions