У меня проблема с mediacontroller; мое приложение должно иметь несколько вкладок с этой структурой:Отображается медиа-контроллер, отображающийся в неправильных фрагментах и начиная с вкладки.
- TAB1: ImageView
- TAB2: MediaController
- TAB3: ImageView
- tab4: ImageView
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ: Заявка начинается с просмотра изображения в TAB1 (видео не должно воспроизводиться); когда я сажусь в TAB2, воспроизведение должно начинаться. Если я переключусь на другую вкладку, воспроизведение должно прекратиться.
АКТУАЛЬНЫЙ РЕЗУЛЬТАТ: MediaController появляется в TAB1, TAB2, TAB3, и воспроизведение начинается, когда загружается основная активность. Если я перейду к TAB4, mediacontroller и воспроизведение будут уничтожены, но снова появятся, если я вернусь к TAB3.
Это, как я реализовать фрагмент с MediaController:
public class FragMpOnly0 extends Fragment {
/**
* The fragment argument representing the section number for this fragment.
*/
public static final String ARG_SECTION_NUMBER = "section_number";
private VideoView videoView;
private MediaController ctrl;
public FragMpOnly0() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_mponly0, container,
false);
// Inizializzazione controllo e playback video
videoView = (VideoView) rootView.findViewById(R.id.videoView1);
// ctrl = new MediaController(this.getActivity());
ctrl = new MediaController(getActivity());
ctrl.setAnchorView(videoView);
ctrl.setMediaPlayer(videoView);
return rootView;
}
private void playVideo()
{
// location of the android resource
Uri uri = Uri.parse("android.resource://"
+ getActivity().getApplication().getPackageName() + "/"
+ R.raw.myvideotoplay);
// Attach a media controller to the video view
videoView.setMediaController(ctrl);
videoView.requestFocus();
videoView.setVideoURI(uri);
ctrl.show();
videoView.start(); // play video
}
@Override
public void onStart() {
super.onStart();
playVideo();
}
/** Stop playback of the video and release resources */
@Override
public void onPause() {
super.onPause();
videoView.pause();
}
@Override
public void onStop() {
super.onStop();
videoView.stopPlayback();
}
@Override
public void onDestroy() {
super.onDestroy();
videoView.suspend();
videoView = null;
}
}
Это XML-файл, связанный с фрагментом с VideoView/MediaController:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity$DummySectionFragment0" >
<VideoView
android:id="@+id/videoView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clickable="true" />
</FrameLayout>