【问题标题】:fragment.getview() always return null when called in an activityfragment.getview() 在活动中调用时总是返回 null
【发布时间】:2014-06-14 06:47:21
【问题描述】:

我有一个问题,即 fragment.getView() 在另一个活动中调用时总是返回 null,尽管事实上 onCreateView 方法在片段内部被覆盖。

例如: 在我的活动中:

frag = new NewBooksFrag();

在我的片段中:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view = null;

    view = inflater.inflate(R.layout.new_book_frag, container,true);

    return view;
}

但是当我打电话时

frag.getView()

它仍然返回 null。知道为什么会这样吗?因为在android文档中,明确说明getView():

“获取片段布局的根视图(onCreateView(LayoutInflater, ViewGroup, Bundle) 返回的那个),如果提供的话。”

如果返回null,我们如何引用片段的视图?

提前致谢

【问题讨论】:

  • "...当在另一个活动中调用时" :你真的是指 另一个 Activity 还是创建 @ 的 Activity 987654326@?
  • @Squonk 你可能是对的。你想访问不托管片段的活动中的片段视图吗?
  • inflater.inflate(R.layout.new_book_frag, container,true);应该是假的

标签: android view null fragment getview


【解决方案1】:

正如 Visamanath 所述,您无需片段添加到活动中,您只需创建它。

要将片段添加到活动中,您可以通过在 xml 中将其实现为视图来实现:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.NewBooksFrag"
              android:id="@+id/new_books_fragment"
              android:layout_width="match_parent"
              android:layout_height="match_parent" />

</LinearLayout>

或者通过在代码中动态添加:

        NewBooksFrag frag = new NewBooksFrag();

        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, frag ).commit();

更多详情请关注官方guide

【讨论】:

    【解决方案2】:

    如果你没有错过发布部分代码

    frag = new NewBooksFrag();

    不会调用onCreateView() 你应该将片段附加到活动中。 使用FragmentManager 来执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2021-09-16
      • 2015-12-03
      相关资源
      最近更新 更多