0

我正在开发一个仅适用于平板电脑和使用android 4.0的简单android应用程序。我的应用程序有主屏幕像如下:如何在单个活动中显示来自第一个片段的第二个片段

enter image description here

的OnCreate()主要活动中,我使用下面的代码添加片段A在main.xml中:

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(); 

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

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

enter image description here

我的问题是我不流汗“如何从第一个在主屏幕上的活动称之为第二个片段?”

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

请指导我。

回答

3

这是最简单的方法:

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(); 
+0

谢谢rciovati。这对我来说工作得很好,我可以去第二个片段。但正如我所提到的第二个片段有VideoView和播放视频,但我的视频不播放。它显示对话框并显示“视频无法播放”消息。我使用以下代码 - VideoView videoView =(VideoView)view.findViewById(R.id.main_video); videoView.setVideoURI(Uri.parse(“android.resource://”+ getActivity()。getPackageName()+“/”+ R.raw.myvideo)); videoView.setMediaController(new MediaController(getActivity())); videoView.start(); 请指导我。 – 2013-04-09 11:02:14

+0

对不起,我没有使用VideoView的经验。我建议你问另一个问题,包括logcat输出:) – rciovati 2013-04-09 11:13:20

+0

谢谢:) rciovati – 2013-04-09 11:29:21

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(); 

应该为你工作。

相关问题