The pp main activity file runs but when any fragment is clicked it crashes. however when emulated on device as well as android emulator, it runs smoothly. The logcat of crash is as below;
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
at java.util.ArrayList.addAll(ArrayList.java:588)
at d.a$b.a(:14)
at i.l$b$a$a.run(Unknown Source:37)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7025)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
while the main activity which starts the fragment is as below;
private void selectDrawerItem(MenuItem menuItem) {
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.menu_1:
fragmentClass = Fragment1.class;
break;
case R.id.menu_2:
fragmentClass = Fragment2.class;
break;
case R.id.menu_3:
fragmentClass = Fragment3.class;
break;
case R.id.menu_4:
fragmentClass = Fragment4.class;
break;
case R.id.menu_5:
fragmentClass = Fragment5.class;
break;
case R.id.menu_6:
fragmentClass = Fragment6.class;
break;
case R.id.menu_7:
fragmentClass = Fragment7.class;
break;
case R.id.menu_8:
fragmentClass = Fragment8.class;
break;
case R.id.menu_9:
fragmentClass = Fragment9.class;
break;
case R.id.menu_10:
fragmentClass = Fragment10.class;
break;
case R.id.menu_11:
fragmentClass = Fragment11.class;
break;
default:
throw new IllegalStateException("Unexpected value: " + menuItem.getItemId());
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
assert fragment != null;
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
// Highlight the selected item has been done by NavigationView
menuItem.setChecked(false);
// Set action bar title
setTitle(menuItem.getTitle());
// Close the navigation drawer
mDrawer.closeDrawers();
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
drawerToggle.syncState();
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, MainActivity.class));
finish();
}
can somebody guide why this is giving error in apk file while runs smoothly on android studio
In my case, the fragments were not starting so I tried removing the minifyEnable and ShrinkResources (true) from the gradle and changed it as
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Although it increased the size of app but the crashing is resolved.