当前位置: 首页 > 知识库问答 >
问题:

getSupportFragmentManager().findFragmentById在Android中为碎片中的google地图返回null?

沃弘图
2023-03-14

我对Google Maps有一个问题,即getSupportFragmentManager().findFragmentById返回的总是null。你有办法解决这个吗?

代码如下:

fragment_map.xml:

<FrameLayout 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="com.myapp.something.MapFragment">
<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />                  
</FrameLayout>

mapsFragment.java:

public class MapFragment extends Fragment implements OnMapReadyCallback, android.location.LocationListener

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    SupportMapFragment mapFragment = (SupportMapFragment) this.getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
...

我有Google Maps在活动,它与代码一起工作:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    null

你知道我怎么解决这个问题吗?

共有1个答案

白志勇
2023-03-14

问题是您正在尝试使用活动的FragmentManager,而您应该使用片段的子FragmentManager。

删除片段中的OnCreate()重写,并添加一个OnCreateView()重写,在该重写中您可以放大布局并调用GetMapAsync():

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_map, container, false);

    SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);

    mapFragment.getMapAsync(this);

    return rootView;
}
 类似资料:
  • 我尝试在我的MainActivity上使用google map功能,我有一个空指针返回:getsupportfragmentmanager().findFragmentById(r.id.map);==>返回null mapfragment将为null,当我使用getMapAsync(this)调用它时;应用程序在启动前就关闭了 content_main.xml 以下是文件: 映射片段位于cont

  • 我正在尝试在android中实现片段通信,就像android指南中的那样http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity 但是我的应用程序由于getSupportFragmentManager()而崩溃。findFragmentById()返回null。我的实现有什么问题。

  • 我有问题加载一个谷歌地图在我的片段。一切都从一个循环器视图适配器开始,该适配器启动活动“ViatGedetAllViewActivity”: 这是我的DetallViewActivity: =2 03-24 02:55:53.881 639-7362/com.example.usuari.MyApplication3 w/ResourcesManager:GetTopleVelResources:

  • mainactivity.java 问题是,当我调用时,我得到的是空值,但当我调用时,我得到的是片段。

  • 我正在开发一个应用程序,应该支持手机和平板电脑。在这个应用程序中,我使用的是来自Android的片段。 现在应用程序的流程如下所示 MainActivity-->fragment1-->Fragment2 我只是在图像中标记了一个额外的菜单项。那么我为什么要来,我该如何解决呢?

  • 如果我们使用<code>系统使用本机库。loadLibrary()然后<code>SupportMapFragment。它在没有任何stacktrace的情况下实现了这一点。这是我能收集到的最好的日志: 我花了几天时间试图了解导致它的原因,似乎如果我们删除调用,即不使用我们的本机lib,那么就可以正常工作。有什么方法可以在不删除我们的本机lib的情况下解决它吗? 编辑:我创建了一个示例应用程序来重