相关疑难解决方法(0)

findMapFragment的findFragmentById在Android Studio中返回null

最近我将项目从Eclipse迁移到Android Studio.除了我的一个使用SupportMapFragment的片段外,一切都设置正常.下面的findFragmentById(在Eclipse中构建时工作)现在返回null :(

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    SupportMapFragment m = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.safety_map));
Run Code Online (Sandbox Code Playgroud)

xml的片段...

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:map="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >

     <fragment
         android:id="@+id/safety_map"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_marginBottom="40dp"
         map:cameraTargetLat="@string/livesafe_latitude"
         map:cameraTargetLng="@string/livesafe_longitude"
         map:uiZoomControls="false"
         class="com.google.android.gms.maps.SupportMapFragment"/>
Run Code Online (Sandbox Code Playgroud)

这是我的build.gradle中的依赖项:

 dependencies {
    //google analytics
    compile 'com.google.apis:google-api-services-analytics:v3-rev103-1.19.0'
    //support library for api 10
    compile 'com.android.support:support-v4:21.0.0'
    //google play services
    compile 'com.google.android.gms:play-services:6.1.11'
    compile project(':facebook')
    compile files('libs/android-support-multidex.jar')
    compile files('libs/aws-android-sdk-1.6.0-debug.jar')
    compile files('libs/FlurryAnalytics_3.3.2.jar')
 }
Run Code Online (Sandbox Code Playgroud)

我没有更改以前在Eclipse中工作的xml文件或Fragment类中的任何代码.

eclipse android gradle android-studio

38
推荐指数
2
解决办法
3万
查看次数

Google Maps Fragment在片段内返回null

所以我有一个包含地图片段的空片段.每当我尝试激活包含地图的片段时,我的应用程序崩溃并在此行返回空指针错误:

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();
Run Code Online (Sandbox Code Playgroud)

完整错误消息:

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.MapFragment.getMap()' on a null object reference
            at com.collusion.serviceassistant.ReturnVisitDetails.onViewCreated(ReturnVisitDetails.java:39)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
            at android.app.BackStackRecord.run(BackStackRecord.java:684)
            at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
            at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
Run Code Online (Sandbox Code Playgroud)

这是我的片段代码:

import android.app.Activity;
import android.app.Dialog;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.model.BitmapDescriptorFactory; …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-fragments

18
推荐指数
5
解决办法
5万
查看次数

Android MapView getMap()返回null

MapViewgetMap()方法可以返回null.我知道这是Google的预期行为.

有人可以提供关于何时以及在何种情况下该方法返回null 的明确描述getMap()

我知道如果Google服务在给定设备上不可用,getMap()则会返回null.这种可能性相对较好地记录在案.我更关注模糊的其他情况,即使在设备上安装Google服务,getMap()仍然可以返回null.

到目前为止,我的假设是底层地图系统有一些初始化,在此期间您的代码可能会执行并获得一个空地图.

我的假设是否正确?

在Activity或Fragment生命周期中是否有任何特定的位置我们可以明确地获得非null GoogleMap(如果我们假设安装了Google Services IS)?

我提出这个问题的目的是防止if(mapView.getMap() != null)在我的代码中散布一连串的支票.此外,这个问题似乎依然拿出定期在这里StackOverflow上,我想看看我们是否能够割肉出局的背后究竟是怎么回事用真情MapViewgetMap()

android android-mapview google-maps-android-api-2

17
推荐指数
2
解决办法
1万
查看次数

findFragmentById(R.id.map)在Android L中返回null

在Android 4.4中测试基于位置的应用时,我们能够通过Android地图v2正确查看和使用地图

自从我升级到Android L以来,它无法使用以下代码获取MapFragment:

  1. 在MainActivity中有一个FrameLayout,我在其中加载ShowMapFragment.

  2. 在ShowMapFragment中有一个MapFragment来显示地图.

  3. 在'OnCreateView()'方法内 mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.map); map = mapFragment.getMap();

mapFragment将为null.对此有何帮助?

android google-maps google-play-services android-maps-v2 android-5.0-lollipop

3
推荐指数
1
解决办法
2019
查看次数