为什么我在地图应用中获得白色屏幕

问题描述:

我是新来的,也是编程方面的新手。 我正在制作地图,我遵循了很多教程,他们都很simillar,但我不知道为什么我的应用程序无法正常工作。该应用程序不会崩溃,但是当我打开地图时出现应用程序标题和地图应显示的白色屏幕。你知道为什么会发生这种情况吗?为什么我在地图应用中获得白色屏幕

这里是我的应用清单,活动:main.xml和mainactivity.java,也许这里是我找不到的错误。

此外,如果帮助logcat的说我:错误打开跟踪文件:没有这样的文件或目录(2)

APP清单

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tdr.mapa1" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <permission 
     android:name="com.tdr.mapa1.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 

<uses-permission android:name="permission_name"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="com.tdr.mapa1.permission.MAPS_RECEIVE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 

    <uses-sdk 
     android:minSdkVersion="12" 
     android:targetSdkVersion="17" /> 
    <application 

     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

    <uses-library android:name="com.google.android.maps" 
        android:required="false"/> 

    <activity 
     android:name="com.tdr.mapa1.MainActivity" 
     android:label="@string/app_name" > 

    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

    </activity> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="<API_KEY>"/> 

    </application> 

    <meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

    </manifest> 

主要活动

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

</RelativeLayout> 

MAINACTIVITY.JAVA

package com.tdr.mapa1; 

import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 



    } 
} 

希望你能帮助我。

+0

你在使用模拟器吗? – user2340612

+2

你必须在你的RelativeLayout中有一些视图,在你的情况下,我想MapView – Android

+0

@ user2340612不,我直接在手机上测试它。 – user3175089

首先你的错误:

Error opening trace file: No such file or directory (2) 

并不意味着什么,你应该节点不搭理它。

其次,无论是元数据标记应该是应用范围内,像这样:

... 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="<API_KEY>"/> 

    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
</application> 

最后,你实际上并没有建立在你的活动布局文件中的任何地图对象,你有没有一个空的RelativeLayout,因此空的白色屏幕。你需要的是在那里添加一个MapFragment或者根据你的目标API添加SupportMapFramgnet。 (在你的情况下,将MapFragment

像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 
    <fragment 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 

您可以从这篇博客文章中,我就这个话题写了获得更详细的信息:

Google Maps API V2 Guide

+0

非常感谢! – user3175089

+0

欢迎你,@ user3175089。很高兴这对你有帮助:) –

见在这里,只需使用清单文件中的密钥更改API密钥并按照以下步骤操作: 和确保生成带有Android名单中提到的包名称的API密钥文件和您的google_play_services_lib项目应该只出现在项目的工作空间中。

清单文件:

<uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.geeklabs.map.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="replace with your API key"/> 

    </application> 

</manifest> 

MainActivity.java:

package com.geeklabs.map; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

} 

activity_main。XML:

<?xml version="1.0" encoding="utf-8"?> 
    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

并确保下列步骤完成的正确与否:

步骤: *,以确保设备具有谷歌Play服务的APK *安装谷歌Play业务转。超过2

enter image description here

  • https://code.google.com/apis/console/
  • 现在创建的项目,使 “谷歌地图Android的API V2” enter image description here
  • 在项目注册SHA1的(,需要写SHA1 ; your.app.package.name)在API控制台并获取API KEY
  • 复制目录ANDROID_SDK_DIR/extras/google/google_play_services/li bproject /谷歌播放,services_lib到项目的根
  • 到下一行添加到YOUR_PROJECT/project.properties

android.library.reference.1=google-play-services_lib

  • 下一行添加到YOUR_PROJECT/proguard的项目.TXT

-keep class * extends java.util.ListResourceBundle {

protected Object[][] getContents();

}

好了,现在你准备使用谷歌地图API的V2为Android创建自己的谷歌地图应用程序。

如果您使用min SDK = 8创建应用程序,请使用android支持库v4 + SupportMapFragment而不是MapFragment。

得到这个后让我知道。