Search code examples
javaandroidandroid-install-apk

App crashes when downloaded from playstore


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


Solution

  • 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.