java – 在谷歌地图V2 … fragment.getMap()返回null

前端之家收集整理的这篇文章主要介绍了java – 在谷歌地图V2 … fragment.getMap()返回null前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法得到地图!我可以得到的都是null.

这里是代码.

  1. public class MainActivity extends FragmentActivity {
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6.  
  7. SupportMapFragment fragment = new SupportMapFragment();
  8. getSupportFragmentManager().beginTransaction()
  9. .add(android.R.id.content,fragment).commit();
  10.  
  11.  
  12. GoogleMap map;
  13. map = fragment.getMap();
  14. //here i cant access this snippet because map = null
  15. if(map!=null){
  16. UiSettings mm = map.getUiSettings();
  17. map.setMyLocationEnabled(true);
  18. } }
  19. }

清单:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.anywhere_reminder"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="17" />
  10. <uses-feature
  11. android:glEsVersion="0x00020000"
  12. android:required="true"/>
  13.  
  14. <permission
  15. android:name="com.example.anywhere_reminder.permission.MAPS_RECEIVE"
  16. android:protectionLevel="signature" />
  17.  
  18. <uses-permission android:name="com.example.anywhere_reminder.permission.MAPS_RECEIVE" />
  19. <uses-permission android:name="android.permission.INTERNET" />
  20. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  21. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  22. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  23. <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  24.  
  25. <application
  26. android:allowBackup="true"
  27. android:icon="@drawable/ic_launcher"
  28. android:label="@string/app_name"
  29. android:theme="@style/AppTheme" >
  30. <activity android:name="com.google.android.gms.BuildConfig" />
  31. <activity
  32. android:name="com.example.anywhere_reminder.MainActivity"
  33. android:label="@string/app_name" >
  34.  
  35. <intent-filter>
  36. <action android:name="android.intent.action.MAIN" />
  37.  
  38. <category android:name="android.intent.category.LAUNCHER" />
  39. </intent-filter>
  40. </activity>
  41.  
  42. <Meta-data
  43. android:name="com.google.android.maps.v2.API_KEY"
  44. android:value=" my key "/>
  45.  
  46. </application>
  47. </manifest>

这里是xml:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity" >
  6.  
  7.  
  8. <fragment xmlns:android="http://schemas.android.com/apk/res/android"
  9. android:id="@+id/map"
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent"
  12. class="com.google.android.gms.maps.MapFragment"/>
  13.  
  14. <TextView
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:layout_centerHorizontal="true"
  18. android:layout_centerVertical="true"
  19. android:text="@string/hello_world" />
  20.  
  21. </RelativeLayout>

我试图解决它像这个解决方Google Maps Android API v2 throws GooglePlayServicesNotAvailableException,out of date,SupportMapFragment.getMap() returns null
..但仍然没有工作

更新:

我的地图现在工作了..这里是编辑的工作版本

  1. public class MainActivity extends FragmentActivity {
  2. private GoogleMap myMap;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7.  
  8. android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager();
  9. SupportMapFragment mySupportMapFragment
  10. = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
  11.  
  12.  
  13. myMap = mySupportMapFragment.getMap();
  14. if(myMap!=null)
  15. myMap.setMyLocationEnabled(true);
  16.  
  17.  
  18. }

解决方法

您正在通过FragmentTransaction创建动态片段.当调用commit()时,片段尚未添加到屏幕中,因为FragmentTransaction仅被安排发生 – 它还没有发生.因此,SupportMapFragment还没有被onCreateView()调用,所以没有GoogleMap.

切换到静态片段(布局中的< fragment>标签),或延迟使用GoogleMap,直到处理完成.

猜你在找的Java相关文章