Reputation: 31
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
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