【发布时间】:2014-06-06 19:16:25
【问题描述】:
我希望我的活动包含 2 个片段,并使用操作栏上的按钮在它们之间切换。所以这是我的活动布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
在活动的 onCreate() 中,我将两个片段都添加到容器中......因为我需要在 secondFragment 之前执行 firstFragment,所以我首先添加它,而不是隐藏 secondFragment,以便用户以正确的顺序看到片段:
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
FirstFragment firstFragment = new FirstFragment();
SecondFragment secondFragment = new SecondFragment();
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment, "FirstFragment")
.add(R.id.fragment_container, secondFragment, "SecondFragment")
.hide(secondFragment)
.commit();
}
当用户触摸操作栏上的按钮时,会执行以下方法,并且应该隐藏一个片段并显示另一个片段,但没有任何反应...
public void changeFragment(int id){
Fragment secondFragment = new SecondFragment();
Fragment firstFragment = new FirstFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction()
.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
switch (id){
case 1:
//show 2nd
transaction.hide(firstFragment)
.show(secondFragment)
.commit();
break;
case 2:
//show 1st
transaction.hide(secondFragment)
.show(firstFragment)
.commit();
break;
default:
//do nothing
}
}
关于我在这里缺少什么的任何提示?提前致谢
【问题讨论】:
标签: android android-fragments fragmenttransaction