Also habe ich drei Registerkarten und in zwei dieser Registerkarten muss ich nachrüsten.In welcher Methode soll ich nachrüsten, wenn ich Tab-Layout mit drei Tabs verwende?
Ich habe versucht, Methoden aufzurufen, die Retrofit-Aufrufe in OnCreateView-Methode haben. In OnResponse-Methode habe ich versucht, Bild durch die URL empfangen zu laden. Aber wenn ich meine App debugge, gibt die onCreateView die Ansicht zurück, noch bevor onResponse aufgerufen wird.
In welcher Methode soll ich Nachrüstaufrufe in Fragment machen?
public class Tab3Fragment extends Fragment {
private ImageView trailer_thumbnail;
private static final String preImgUrl = "http://img.youtube.com/vi/";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab3_fragment, container, false);
trailer_thumbnail = (ImageView) rootView.findViewById(R.id.trailer_thumbnail);
updateTrailer();
/*if(DetailsActivity.movieTrailerList.size() != 0)
Picasso.with(getContext()).load(preImgUrl + DetailsActivity.movieTrailerList.get(0).getKey() + "/default.jpg").
placeholder(R.mipmap.ic_launcher).
error(R.mipmap.ic_launcher).
into(trailer_thumbnail);*/
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void updateTrailer(){
final ProgressDialog mProgressDialog = new ProgressDialog(getContext());
mProgressDialog.setIndeterminate(true);
mProgressDialog.setMessage("Loading...");
mProgressDialog.show();
Retrofit retrofit = new Retrofit.Builder().
baseUrl(MainActivity.baseUrl).
addConverterFactory(GsonConverterFactory.create()).
build();
final RequestInterface requestInterface = retrofit.create(RequestInterface.class);
Call<MovieTrailerResponse> call1 = requestInterface.getMovieTrailers(list.get(index).getId(), MainActivity.apiKEy);
call1.enqueue(new Callback<MovieTrailerResponse>() {
@Override
public void onResponse(Call<MovieTrailerResponse> call, Response<MovieTrailerResponse> response) {
if (mProgressDialog.isShowing())
mProgressDialog.dismiss();
List<MovieTrailer> movieTrailerList = response.body().getResults();
Log.i("trailer", preImgUrl + movieTrailerList.get(0).getKey() + "/default.jpg");
if (movieTrailerList.get(0).getSite() == "YouTube")
Picasso.with(getActivity()).load(preImgUrl + movieTrailerList.get(0).getKey() + "/default.jpg").
into(trailer_thumbnail);
}
@Override
public void onFailure(Call<MovieTrailerResponse> call, Throwable t) {
}
});
}
Das ist mein tab3 Fragment Klasse, wenn ich die app bin Debuggen onCreateView
noch bevor Anhänger Tab aufgerufen wird, wird ausgewählt und die Ansicht zurückgegeben wird, bevor der API-Aufruf die Daten empfängt. So kann ich das Bild auch mit progressdialog nicht laden. Tatsächlich wird Fortschrittsdialog angezeigt, wenn ich Tab2 wähle.
Es hängt von Ihrer Anforderung ab. "Aber wenn ich meine App debugge, gibt die onCreateView die Ansicht zurück, noch bevor onResponse aufgerufen wird". Was ist das Problem damit? Was genau versuchst du zu tun? – OBX
Ich versuche, meine Bildansicht mit URL (mit Picasso) von API Aufruf geladen, so dass die onCreateView die Ansicht zurückgibt, noch bevor meine Bildansicht geladen wird – potter13