I am developing a movie application.
My problem is this:
When I click on the movie, it shows the details of it.
In the details I can watch the trailer. When you click the Watch button, it will be redirected to YouTube, where the movie trailer is displayed. But after clicking on another movie again, it opens YouTube directly instead of showing its details.
How can I finish the activity I created to redirect to YouTube?
My code:
MovieListFragment
public class MovieListFragment extends Fragment implements OnMovieListener, OnBtnMoreListner {
//Adapter
private MovieListParentApdater movieListParentApdater;
//ViewModel
private MovieListViewModel movieListViewModel;
//ViewBinding
private MovieListFragmentBinding movieListFragmentBinding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
movieListFragmentBinding = MovieListFragmentBinding.inflate(inflater,container,false);
movieListViewModel = new ViewModelProvider(this).get(MovieListViewModel.class);
configureRecyclerView();
//Calling the observer
observeGendersChange();
return movieListFragmentBinding.getRoot();
}
//Configure RecyclerView
private void configureRecyclerView() {
movieListParentApdater = new MovieListParentApdater(getActivity(),this,this);
movieListFragmentBinding.rvParent.setLayoutManager(new LinearLayoutManager(getContext()));
movieListFragmentBinding.rvParent.setAdapter(movieListParentApdater);
}
//is called on my gridViewAdapter when I click on the image
@Override
public void onMovieClick(MovieModel movie) {
Bundle bundle = new Bundle();
bundle.putParcelable("movie", movie);
Navigation.findNavController(getActivity(),R.id.nav_host_fragment).navigate(R.id.movieDetailsFragment,bundle);
}
MovieDetailsFragment
public class MovieDetailsFragment extends Fragment {
//ViewBinding
private MovieDetailsFragmentBinding movieDetailsFragmentBinding;
//ViewModel
private MovieDetailsViewModel movieDetailsViewModel;
//Movie
private MovieModel movie;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
movieDetailsFragmentBinding = MovieDetailsFragmentBinding.inflate(inflater,container,false);
movieDetailsViewModel = new ViewModelProvider(this).get(MovieDetailsViewModel.class);
movieDetailsFragmentBinding.btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Navigation.findNavController(getActivity(), R.id.nav_host_fragment).navigateUp();
}
});
movie = getArguments().getParcelable("movie");
observerUrlVideoMovieChange();
//btn play video
movieDetailsFragmentBinding.btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(movie.getVideo() == null) // if movie hasn't video
movieDetailsViewModel.getUrlVideoMoviesID(movie.getId()); //get url
else
showVideo(movie.getVideo());
}
});
//show details
showDetails();
return movieDetailsFragmentBinding.getRoot();
}
//show trailer movie
private void showVideo(String videoId) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + videoId));
startActivity(intent);
}
}