0

我最近将我的 ActionBar 修改为有两个选项卡,分别对应于两个 Fragment。

假设我的第一个选项卡是主页,第二个选项卡是关于页面。

关于页面是静态的。

主页发生变化。假设,出于问题的考虑,主页在屏幕中央有一个按钮。我希望它以这样一种方式,当用户单击按钮时,页面会更改为另一个带有文本的屏幕。这很容易通过使用 Intent 的活动来完成。我不知道如何使用片段来做到这一点。

总之,在选项卡内切换片段的最佳做法是什么?

4

1 回答 1

1

考虑使用片段的方法 getChildFragmentManager()。

所以你要走的路。

在你的第一个标签中

创建嵌套片段 witch 将显示按钮。

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

}
于 2013-05-15T14:54:56.107 回答