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文件中给出错误吗
答案 0 :(得分:0)
在我的情况下,片段没有开始,所以我尝试从gradle中删除minifyEnable和ShrinkResources(true)并将其更改为
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
尽管它增加了应用程序的大小,但崩溃已得到解决。