我有两个并排的片段。当我对左侧片段执行操作时,我希望右侧片段发生变化。只要正确片段的 layout.xml 没有更改,它就可以工作。我想要的是定义一些布局,例如layout1.xml、layout2.xml 等等,根据左边发生的情况,应该显示这些布局之一。我找到了http://developer.android.com/guide/components/fragments.html#Transactions但我不确定这是否是正确的方法。如果不是正确的方法是什么?如果是我有点挣扎
transaction.replace(R.id.fragment_container, newFragment);
我需要告诉newFragment 它现在有例如layout27.xml。我怎样才能做到这一点?
编辑:
我的 main.xml 看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment class="com.whatever.OverviewFragment"
android:id="@+id/list"
android:name="com.whatever.OverviewFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment class="com.whatever.DetailFragment"
android:id="@+id/listB"
android:name="com.whatever.DetailFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
第二个片段应该在用户操作上交换,对于 listB,我可以说 5 个不同的 layout.xml 文件。
DetailFragment.java 看起来基本上是这样的:
public class DetailFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.details, container, false);
}
//this is called when I do an action in the other fragment
public void setScreen(int id) {
//This fragment is one of the 5 possible fragments
DetailFragment2 newF = new DetailFragment2();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.listB, newF);
transaction.addToBackStack(null);
transaction.commit();
}
}