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

應該爲你工作。

相關問題