1

我正在开发一个仅适用于平板电脑并使用 android 4.0 的简单 android 应用程序。我的应用程序的主屏幕如下:

在此处输入图像描述

主活动的 Oncreate() 我使用以下代码在 main.xml 中添加片段 A:

FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment imageFragment = new ImageFragment();
ft.replace(R.id.fragment_container, imageFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();

这个片段 A 只有一个可点击的图像视图。现在我希望当用户单击图像视图时,应该调用另一个片段(片段 B)并替换图像视图。片段 B 有一个播放视频的 VideoView。

所以我的第二个屏幕应该如下所示:

在此处输入图像描述

我的问题是我没有得到“如何在主屏幕活动中从第一个片段中调用第二个片段?”

我可以使用不同的活动,但我不想这样做,只想使用片段来运行它。

请指导我。

4

2 回答 2

4

这是最简单的方法:

1)在里面YourActivity创建一个方法:

public void goToSecondFragment(){}
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    Fragment secondFragment = new SecondFragment();
    ft.replace(R.id.fragment_container, secondFragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.addToBackStack(null);
    ft.commit();
}

2)在你的第一个片段中,当你想替换它时,调用:

YourActivity activity = (YourActivity) getActivity();
activity.goToSecondFragment();
于 2013-04-09T09:05:01.337 回答
0

您可以使用以下方法执行相同操作:

添加片段并维护后退堆栈

FragmentManager supportFragmentManager = getSupportFragmentManager();
supportFragmentManager.addOnBackStackChangedListener(new OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
}
}); 
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.addToBackStack("fragmentTag");
fragmentTransaction.replace(R.id.slate, fragment, "fragmentTag");
fragmentTransaction.commit();

并替换片段

FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.replace(R.id.slate, fragment, "fragmentTag");
fragmentTransaction.commit();

应该为你工作。

于 2013-04-09T08:59:24.373 回答