最近升级了工作站并加载了Android Studio 3.0.1,默认为Android SDK平台27.我以为我会将应用程序从Android SDK Platform 23迁移到SDK Platform 27
Android Studio对此迁移很有帮助,建议更新所有正确的参数,如下所示;
compileSdkVersion 23 ---> 27
buildToolsVersion 23.0.1 ---> 27.0.3
Gradle version 2.14.1 ---> 4.1
Android Plugin Version 2.2.2 ---> 3.0.1
minSdkVersion 9 ---> 14
targetSdkVersion 23 ---> 27
还必须添加Google maven存储库并更新com.android.support库,如下所示;
compile 'com.android.support:design:23.0.1 ---> 27.0.2'
compile 'com.android.support:appcompat-v7:23.0.1 ---> 27.0.2'
compile 'com.android.support:cardview-v7:23.0.1 ---> 27.0.2'
compile 'com.android.support:recyclerview-v7:23.0.1 ---> 27.0.2'
到目前为止一切似乎都很好,构建APK并在设备上安装就好但app崩溃了
我很欣赏可能存在的问题,所以我想问一下;
如所怀疑的那样,我在v23上遇到了编码错误但在v27上是不能容忍的
在过去,我已经能够直接从MainActivity中的onCreate方法引用导航栏标题上的“用户名”而不会出现像SDK级别23这样的错误
rUsername = findViewById(R.id.username);
API级别27上的Android Studio未检测到任何错误,项目编译成APK,但应用程序崩溃时出现NullPointerException,因为rUsername永远不会被初始化
@Bereket Gobeze,@ Farjan Elahi,@ anianhanniballake,@ RmK等人在帖子中解决了这个问题。并使用getHeaderView
修复如下 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
if (navigationView != null) {
setupDrawerContent(navigationView);
View header = navigationView.getHeaderView(0);
rUsername = (TextView) header.findViewById(R.id.username);
}
我可以确认这现在正常运行,应用程序编译并运行正常。必须对导航标题上的用户名重新同步项目才能在Android Studio中进行选择
希望这可能对其他人有用