0

Я разрабатываю простое приложение для Android только для планшетов и с помощью Android 4.0. Мое приложение имеет главный экран, как следующим образом:Как показать второй фрагмент из первого фрагмента в одном действии

enter image description here

OnCreate() от основной деятельности я добавляю Fragment А в 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 есть видеообзор, который воспроизводит видео.

Так мой второй экран должен быть как следующим образом:

enter image description here

Моя проблема в том, что я не gettting «Как звонить второй фрагмент из первого с в главном экране деятельности?»

Я могу использовать разные действия, но я не хочу этого делать и просто хочу запустить это с помощью фрагментов.

Прошу вас, руководствоваться.

ответ

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 (новый MediaController (getActivity())); videoView.start(); Прошу вас, пожалуйста. –

+0

Извините, у меня нет опыта работы с VideoView. Я предлагаю вам задать другой вопрос, в том числе вывод logcat :) – rciovati

+0

Спасибо :) rciovati –

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

должны работать для вас.

Смежные вопросы