如何获得在XML布局中添加的片段

我有一个包含如下片段的布局:

<fragment android:id="@+id/mainImagesList" android:name="com.guc.project.ImagesList" android:layout_width="match_parent" android:layout_height="62dp" android:layout_below="@+id/addimagebutton" android:layout_weight="1" android:paddingTop="55dp" /> 

现在,我需要得到这个片段,并施放它,所以我可以操纵它,并出现更新。 我该怎么做?

编辑:我想我已经设法得到的片段,但是当我改变一些variables,变化不会出现!

你可以得到如下的片段实例:

 getSupportFragmentManager().findFragmentById(R.id.yourFragmentId) 

如果片段被embedded到另一个片段中,则需要getChildFragmentManager而不是getFragmentManager。 例如,在布局xml中定义如下的片段:

 <fragment android:name="com.aventlabs.ChatFragment" android:id="@+id/chatfragment" android:background="#ffffff" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginTop="50dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" /> 

在代码中,你可以得到像这样的片段实例:

 FragmentManager f = getChildFragmentManager(); FragmentTransaction transaction = f.beginTransaction(); chatFragment = f.findFragmentById(R.id.chatfragment); if (chatFragment != null) { transaction.hide(chatFragment); } transaction.commit(); 

我做了完全一样的android和最简单的方法来做到这一点在使用接口。 我有一个6片段的活动,我只需要更新其中的3个。

我用这个

  final Integer numeroFragments = ((PagerAdapterOfe) mViewPager.getAdapter()).getCount(); for (int i=0; i<numeroFragments; i++) { Object fragment = ((PagerAdapterOfe) mViewPager.getAdapter()).getItem(i); // If the fragment implement my interface, update the list if (fragment instanceof IOfertaFragment){ ((IOfertaFragment) fragment).actualizaListaOfertas(); } } 

其中,PageAdapterOfe是我的活动片段适配器。 我循环所有的片段,并寻找那些实现我的接口,当我find一个,我执行由我的接口定义的方法,那是!

我在活动中使用这个代码来保存所有的片段,作为对广播信号的响应,你可以把它放在你需要的地方。

界面:

 public interface IOfertaFragment { public void actualizaListaOfertas(); } 

你可以使用findFragmentById(如果你知道它包含的组件)或findFragmentByTag(如果你知道它的标签)

我不知道要更新哪些variables,但是可以使用FragmentTransaction API将片段replace为另一个片段。

有关示例,请参阅http://developer.android.com/guide/components/fragments.html