我最近将我的 ActionBar 修改为有两个选项卡,分别对应于两个 Fragment。
假设我的第一个选项卡是主页,第二个选项卡是关于页面。
关于页面是静态的。
主页发生变化。假设,出于问题的考虑,主页在屏幕中央有一个按钮。我希望它以这样一种方式,当用户单击按钮时,页面会更改为另一个带有文本的屏幕。这很容易通过使用 Intent 的活动来完成。我不知道如何使用片段来做到这一点。
总之,在选项卡内切换片段的最佳做法是什么?
我最近将我的 ActionBar 修改为有两个选项卡,分别对应于两个 Fragment。
假设我的第一个选项卡是主页,第二个选项卡是关于页面。
关于页面是静态的。
主页发生变化。假设,出于问题的考虑,主页在屏幕中央有一个按钮。我希望它以这样一种方式,当用户单击按钮时,页面会更改为另一个带有文本的屏幕。这很容易通过使用 Intent 的活动来完成。我不知道如何使用片段来做到这一点。
总之,在选项卡内切换片段的最佳做法是什么?
考虑使用片段的方法 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
}