如何从视图中获取片段?

我添加了一些FragmentTableLayout ,我想从我的容器Activitypipe理他们,所以我用这个:

 Fragment fragment = (Fragment) tableLayout.getChildAt(i); 

但是getChildAt(int)返回一个View和一个View不能转换成Fragment

Related of "如何从视图中获取片段?"

我不明白为什么人们会低估你的问题。 有时候Fragments可能会让人感到困惑,特别是初学者。 要了解您的问题,您必须了解什么是Fragment以及如何使用它们。

首先, View是屏幕上存在的东西。 例子包括: TextViewEditTextButton等。它们被放置在XML“布局”中。 这些布局显示使用一个Activity

现在, Fragment不是一个View 。 它在屏幕上根本没有任何存在。 相反,它是一个简单pipe理“布局”的类 – 类似于Activity 。 如果你需要你的Fragment的onCreateView()返回的视图,你可以直接在你的Activity使用findViewById()

如果你需要参考你的片段,有两种可能的方法来做到这一点:

1)如果你像这样以编程的方式添加了Fragment

 getFragmentManager() .beginTransaction() .replace(R.id.fragment_container_viewgroup, myFragment, FRAGMENT_TAG) .commit(); 

您可以使用:

 MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag(FRAGMENT_TAG); 

2)如果你在这样的XML布局中添加了Fragment:

 <fragment android:name="com.example.android.fragments.HeadlinesFragment" android:id="@+id/fragmentContainer" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> 

你可以使用这个:

 getFragmentManager().findFragmentById(R.id.fragmentContainer); 

基本上,每个Activity都有一个FragmentManager类来维护所有活动的Fragments ,并且有两种方式来查找它们:使用在显示碎片时通过的唯一TAG,或者传递添加碎片的容器视图ID。

你不能得到这样的片段。 你将不得不添加一个标签片段,并通过该标签检索。

添加一个片段如下:

 getFragmentManager().beginTransaction().add(R.id.container, fragment, "tagTofindFragment"); 

得到片段:

 fragment = getFragmentManager().findFragmentByTag("tagTofindFragment"); 

这里的tagTofindFragment就是你的片段中应该是唯一的标签。