&引用;资源“;新安装Android Studio(谷歌地图)后,我的旧项目出错
在我的新电脑上安装了Android Studio并导入了我的旧项目后,我无法在智能手机上运行该应用程序。在运行应用程序之前,我在一个…v21.xml文件中遇到了一些错误,我可以通过更新我的构建梯度来修复这些错误。我将参数从“19.+”更新为新版本“22.0.0”。 build.gradle:&引用;资源“;新安装Android Studio(谷歌地图)后,我的旧项目出错,android,android-studio,maps,google-play-services,Android,Android Studio,Maps,Google Play Services,在我的新电脑上安装了Android Studio并导入了我的旧项目后,我无法在智能手机上运行该应用程序。在运行应用程序之前,我在一个…v21.xml文件中遇到了一些错误,我可以通过更新我的构建梯度来修复这些错误。我将参数从“19.+”更新为新版本“22.0.0”。 build.gradle: apply plugin: 'android' android { compileSdkVersion 22 buildToolsVersion '22.0.0' defaultConfig {
apply plugin: 'android'
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
defaultConfig {
minSdkVersion 17
targetSdkVersion 22
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
}
dependencies {
compile 'com.android.support:support-v4:22.0.0'
compile 'com.google.android.gms:play-services:7.8.0'
compile 'com.android.support:appcompat-v7:22.0.0'
}
我安装了所有的SDK、Google Play服务、为Google地图创建了一个新的密钥并实现了它、安装了最新的USB驱动程序等等,但我无法在我的Nexus 6(Android 5.1)上运行该应用程序。应用程序总是在显示活动之前崩溃。
我总是在日志中看到此错误:
08-28 13:25:30.265 28056-28056/? I/art﹕ Late-enabling -Xcheck:jni
08-28 13:25:30.310 28056-28056/de.touristenfahrerforum.MarcelMoiser W/ResourcesManager﹕ Asset path '/system/framework/com.google.android.maps.jar' does not exist or contains no resources.
然后是此日志:
08-28 13:25:30.371 28056-28056/de.touristenfahrerforum.MarcelMoiser D/AndroidRuntime﹕ Shutting down VM
08-28 13:25:30.372 28056-28056/de.touristenfahrerforum.MarcelMoiser E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: de.touristenfahrerforum.MarcelMoiser, PID: 28056
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.touristenfahrerforum.MarcelMoiser/de.touristenfahrerforum.MarcelMoiser.Activities.MainMenuActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at de.touristenfahrerforum.MarcelMoiser.Activities.MainMenuActivity.onCreate(MainMenuActivity.java:97)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
08-28 13:30:30.440 28056-28056/de.touristenfahrerforum.MarcelMoiser I/Process﹕ Sending signal. PID: 28056 SIG: 9
编辑:
错误似乎出现在MainMenuActivity中,尽管它以前是这样工作的。这是一项带有抽屉菜单的活动:
public class MainMenuActivity extends Activity
{
private String[] menuItems;
private DrawerLayout drawerLayout;
private ListView drawerList;
private ActionBarDrawerToggle drawerToggle;
private CharSequence drawerTitle;
private CharSequence title;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_menu);
//Standartwerte für die Einstellungen erzeugen
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
title = drawerTitle = getTitle();
menuItems = new String[]{getString(R.string.startmenu), getString(R.string.load_table_button), getString(R.string.settings)};
drawerLayout = (DrawerLayout) findViewById(R.id.main_menu);
drawerList = (ListView) findViewById(R.id.left_drawer);
//Setzt den Schatten über das Menü
drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
//Holt sich den Wert für die Umrechnung zwischen PX und DP
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
V.LOGICAL_DENSITY = metrics.density;
// Set the adapter for the list view
drawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, menuItems));
// Set the list's click listener
drawerList.setOnItemClickListener(new DrawerItemClickListener());
// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
drawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(title);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(drawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
drawerLayout.setDrawerListener(drawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true); <----------- Error here, Nullpointer
getActionBar().setHomeButtonEnabled(true);
if (savedInstanceState == null) {
selectItem(0);
}
}
公共类MainMenuActivity扩展活动
{
私有字符串[]菜单项;
私人抽屉布局;
私有列表视图抽屉列表;
私人诉讼律师事务所;
私人押记;
私人所有权;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(右布局主菜单);
//埃因斯特伦·埃尔泽根标准酒店
setDefaultValues(this,R.xml.preferences,false);
title=drawerTitle=getTitle();
menuItems=newstring[]{getString(R.String.startmenu),getString(R.String.load_table_按钮),getString(R.String.settings)};
抽屉布局=(抽屉布局)findViewById(R.id.main_菜单);
抽屉列表=(列表视图)findViewById(R.id.left\u抽屉);
//这是一个很好的例子
drawerLayout.setDrawerShadow(R.drawable.drawer\u shadow,GravityCompat.START);
//这是一个很好的例子
DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(度量);
V.逻辑密度=度量密度;
//设置列表视图的适配器
抽屉列表setAdapter(新阵列适配器)(此,
R.layout.drawer_list_item,menuItems));
//设置列表的单击侦听器
setOnItemClickListener(新的DroperItemClickListener());
//ActionBarDrawerToggle将适当的交互连接在一起
//在滑动抽屉和操作栏应用程序图标之间
抽屉切换=新动作bardrawertoggle(
此,/*主机活动*/
抽屉布局,/*抽屉布局对象*/
R.drawable.ic_抽屉,/*导航抽屉图像替换“Up”插入符号*/
R.string.drawer\u open,/*“open drawer”描述,用于辅助功能*/
R.string.drawer\u close/*“close drawer”可访问性说明*/
) {
公共无效onDrawerClosed(视图){
getActionBar().setTitle(标题);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
打开图纸上的公共空白(视图抽屉视图){
getActionBar().setTitle(抽屉标题);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
};
抽屉布局。设置抽屉链接器(抽屉切换);
getActionBar().setDisplayHomeAsUpEnabled(true);您正在使用支持活动吗?…那么为什么要使用getActionBar()?使用适当的方法获得带支架的操作杆library@Hömafreak:您确定您的活动不是全屏活动吗?@Hömafreak:此“”java.lang.NullPointerException:尝试调用虚拟方法'void android.app.ActionBar.setDisplayHomeAsUpEnabled(布尔值)当操作栏未显示在activity..中时,会发生空对象引用“”上的“”错误!!是否使用AppCompactActivity?如果是,请使用getSupportActionBar()从AppCompactActivity扩展活动
<activity
android:name=".Activities.MainMenuActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>