从Playstore下载

问题描述

pp主活动文件运行,但是单击任何片段都会崩溃。但是,在设备以及android模拟器上进行仿真时,它可以平稳运行。崩溃的日志如下:

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)

启动片段的主要活动如下;

 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();
        }

有人可以指导为什么在android studio上顺利运行时,这会在apk文件中给出错误

解决方法

在我的情况下,片段没有开始,所以我尝试从gradle中删除minifyEnable和ShrinkResources(true)并将其更改为

   buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
        }
}

尽管它增加了应用程序的大小,但崩溃已得到解决。