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

findFragmentById返回null

安承教
2023-03-14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <fragment android:name="com.madduck.test.app.fragment.MainFragment"
                  android:id="@+id/main_fragment"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent" />

        <fragment android:name="com.madduck.test.app.fragment.LoginFragment"
                  android:id="@+id/login_fragment"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent" />
</LinearLayout>

mainactivity.java

private static final int LOGIN = 0;
private static final int MAIN = 1;
private static final int FRAGMENT_COUNT = MAIN +1;
private Fragment[] fragments = new Fragment[FRAGMENT_COUNT]

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

    FragmentManager fm = getSupportFragmentManager();
    fragments[LOGIN] = fm.findFragmentById(R.id.login_fragment);
    fragments[MAIN] = fm.findFragmentById(R.id.main_fragment);

    FragmentTransaction transaction = fm.beginTransaction();
    for (Fragment f : fragments) {
        if (f != null)
            transaction.hide(f);
        else
            Log.e(TAG, "???");
    }

    transaction.commit();
}

问题是,当我调用fm.findfragmentbyid(r.id.login_fragment);时,我得到的是空值,但当我调用fm.findfragmentbyid(r.id.main_fragment);时,我得到的是片段。

共有1个答案

李奕
2023-03-14

Kar0t的答案很好,但这可能会对某些人有所帮助。在我的案例中,我有一个片段中的一个片段,但我得到了错误的FragmentManager。我只好打个电话:

GetChildFragmentManager()

然后像往常一样找到片段:

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

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

  • 我对Google Maps有一个问题,即getSupportFragmentManager().findFragmentById返回的总是null。你有办法解决这个吗? 代码如下: mapsFragment.java: 我有Google Maps在活动,它与代码一起工作: null 你知道我怎么解决这个问题吗?

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 我有两个活动和两个布局。当我在第一个活动中显示列表时,一切都正常,并在单击时给出列表中项目的编号,但当我尝试在第二个活动中重复相同的内容时,它会告诉我RecycleServiceClickListener侦听器为空。 适配器: 第一项活动: 第二项活动: 错误: 我不明白为什么在第一种情况下,它正常处理单击,而在第二种情况下,它说RecyclerViewClickListener为null

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方