我最近修改了我的ActionBar,因为它有两个标签,分别对应两个片段。
假设我的第一个标签是主页面,第二个是我的关于页面。
关于页面是静态的。
主页面发生了变化。让我们说,为了问题,主页面在屏幕中央有这个单一按钮。我希望它以这样一种方式,当用户点击按钮时,页面将更改为另一个带有文本的屏幕。使用Intent可以轻松完成此操作。我不知道如何用Fragments做到这一点。
总之,在标签内切换片段的最佳做法是什么?
答案 0 :(得分:1)
考虑使用片段的方法getChildFragmentManager()。
所以你要走了。
在第一个标签
中创建嵌套片段whitch将显示按钮。
MainPage.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
/>
</LinearLayout>
class MainPage extends Fragment(){
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, new ButtonFragment(), ButtonFragment.class.getName());
ft.commit();
((Button)getActivity().findViewById(R.id.your_button)).setOnClickListener(new OnClickListener(){
public void onClick(View v){
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, new TextFragment(), TextFragment.class.getName());
ft.addToBackStack(TextFragment.class.getName());
ft.commit();
}
})
}
public boolean onBackPressed(){
FragmentManager mn = getChildFragmentManager();
if(mn.getBackStackEntryCount()>0)
mn.popBackStack(man.getBackStackEntryAt(0).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
class ButtonFragment extends Fragment(){
.....
public void onCreateView(Bundle savedinstance){
//inflate you view with button here
}