【问题标题】:Android Google Maps API v2: FragmentManager.findFragmentById() always returns NULLAndroid Google Maps API v2:FragmentManager.findFragmentById() 始终返回 NULL
【发布时间】:2023-04-11 10:02:01
【问题描述】:

在开发涉及 Android Google Maps API v2.0 的应用时,我发现 FragmentManager.findFragmentById() 总是返回 NULL。我从 XML 文件中扩充了片段。我可以得到 View 没问题,但是 Fragment 本身呢?我什至尝试了 4 秒的延迟,以确保在我获得 ID 时所有内容都已加载。

//
// res/layout/mapfragment.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="fill_parent"
              android:layout_height="fill_parent"
              class="com.google.android.gms.maps.SupportMapFragment"/>

// Transmitting resource ID of fragment in XML

    ui.setMapFragmentResourceID(R.layout.mapfragment);

..

// Showing map

    @Override
        public void showMap() {

    ...

        m_map = m_currentActivity.getLayoutInflater().inflate(m_mapFragmentResourceID, null);

        cv.postDelayed(new Runnable() {
            @Override
            public void run() {
                afterShowMapView();
            }
        }, 4000);
    }

// 4000 msec delay to allow for everything to load

    public void afterShowMapView()
    {
        FragmentActivity fa = (FragmentActivity)m_currentActivity;

        FragmentManager fm = fa.getSupportFragmentManager();
        SupportMapFragment f = (SupportMapFragment)fm.findFragmentById(m_mapFragmentResourceID);
    }

//
// f is always null
//

我怎样才能获得 Fragment/SupportFragment 对象本身(与我通过膨胀布局获得的视图相反)?

【问题讨论】:

    标签: android api maps fragment


    【解决方案1】:

    根据您的 XML,您使用了正确的 ID,即 R.id.map。如果我正确理解您的代码,则您使用的是R.layout.mapfragment

    【讨论】:

    • 谢谢!解决了。 XML 文件的资源 ID 与 XML 文件中片段的资源 ID 不同。
    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多