I have created a Android Studio project and I have inplemented a Navigation Drawer based on the Github project by (Mike Penz)
The drawer is working fine and I'm able to navigate to menu fragments just fine.
I only have one issue that I need help with.
My (SettingsFragment) extends (PreferenceFragment) but from my dawer I'm not able to navigate settings fragment. It is just crashing the app.
SettingsFragment.Java
public class SettingsFragment extends PreferenceFragment {
public SettingsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
Below is the code that navigates to diffirent fragments
MainActivity.Java
...
public void selectDrawerItem(int ItemId,IDrawerItem drawerItem) {
// Create a new fragment and specify the fragment to show based on nav item clicked
Fragment fragment = null;
Class fragmentClass;
switch(ItemId) {
case 1:
fragmentClass = OneFragment.class;
break;
case 2:
fragmentClass = TwoFragment.class;
break;
case 3:
fragmentClass = ThreeFragment.class;
break;
case 4:
fragmentClass = FourFragment.class;
break;
case 5:
fragmentClass = SettingsFragment.class;
break;
default:
fragmentClass = OneFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
result.closeDrawer();
}
...
The LogCat output
12-19 20:32:06.619 10651-10651/com.company.app W/System.err: java.lang.ClassCastException: com.company.app.fragments.SettingsFragment cannot be cast to android.support.v4.app.Fragment
12-19 20:32:06.619 10651-10651/com.company.app W/System.err: at com.company.app.activities.MainActivity.selectDrawerItem(MainActivity.java:259)
12-19 20:32:06.620 10651-10651/com.company.app W/System.err: at com.company.app.activities.MainActivity$3.onItemClick(MainActivity.java:225)
12-19 20:32:06.620 10651-10651/com.company.app W/System.err: at com.mikepenz.materialdrawer.DrawerBuilder$6.onClick(DrawerBuilder.java:1768)
12-19 20:32:06.620 10651-10651/com.company.app W/System.err: at com.mikepenz.materialdrawer.DrawerBuilder$6.onClick(DrawerBuilder.java:1742)
12-19 20:32:06.620 10651-10651/com.company.app W/System.err: at com.mikepenz.fastadapter.FastAdapter$1.onClick(FastAdapter.java:580)
12-19 20:32:06.621 10651-10651/com.company.app W/System.err: at com.mikepenz.fastadapter.utils.EventHookUtil$1.onClick(EventHookUtil.java:72)
12-19 20:32:06.621 10651-10651/com.company.app W/System.err: at android.view.View.performClick(View.java:6256)
12-19 20:32:06.621 10651-10651/com.company.app W/System.err: at android.view.View$PerformClick.run(View.java:24701)
12-19 20:32:06.621 10651-10651/com.company.app W/System.err: at android.os.Handler.handleCallback(Handler.java:789)
12-19 20:32:06.621 10651-10651/com.company.app W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98)
12-19 20:32:06.621 10651-10651/com.company.app W/System.err: at android.os.Looper.loop(Looper.java:164)
12-19 20:32:06.622 10651-10651/com.company.app W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6541)
12-19 20:32:06.622 10651-10651/com.company.app W/System.err: at java.lang.reflect.Method.invoke(Native Method)
12-19 20:32:06.622 10651-10651/com.company.app W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
12-19 20:32:06.622 10651-10651/com.company.app W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
12-19 20:32:06.628 10651-10651/com.company.app D/AndroidRuntime: Shutting down VM
12-19 20:32:06.630 10651-10651/com.company.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.company.app, PID: 10651
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:394)
at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:441)
at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:432)
at com.company.app.activities.MainActivity.selectDrawerItem(MainActivity.java:265)
at com.company.app.activities.MainActivity$3.onItemClick(MainActivity.java:225)
at com.mikepenz.materialdrawer.DrawerBuilder$6.onClick(DrawerBuilder.java:1768)
at com.mikepenz.materialdrawer.DrawerBuilder$6.onClick(DrawerBuilder.java:1742)
at com.mikepenz.fastadapter.FastAdapter$1.onClick(FastAdapter.java:580)
at com.mikepenz.fastadapter.utils.EventHookUtil$1.onClick(EventHookUtil.java:72)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)