У меня есть один API для фильмов, я хочу показать в MovieFragment популярные фильмы. Для тестирования сначала я хочу показать название фильма в текстовом представлении. Извините за мой английский sh. Пожалуйста, помогите мне, я в замешательстве. Моя MainActivity. java код:
package com.example.view;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.widget.Toast;
import com.example.view.fragments.MovieFragment;
import com.example.workingproject.R;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import java.util.List;
import retrofit.IApiInterface;
import retrofit.MoviesResult;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
private static final String BASE_URL = "https://developers.themoviedb.org/";
private static final String API_KEY = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
private static final String CATEGORY = "Popular";
private static final String LANGUAGE = "en-US";
public static int pages = 1;
private String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_nav);
bottomNavigationView.setOnNavigationItemSelectedListener(navListener);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
IApiInterface apiInterface = retrofit.create(IApiInterface.class);
Call<MoviesResult> moviesResultCall = apiInterface.getPopularMovies(CATEGORY, API_KEY, LANGUAGE, pages);
moviesResultCall.enqueue(new Callback<MoviesResult>() {
@Override
public void onResponse(Call<MoviesResult> call, Response<MoviesResult> response) {
if (response.isSuccessful()) {
MoviesResult moviesResult = response.body();
List<MoviesResult.Result> result = moviesResult.getResults();
for (MoviesResult.Result r : result) {
text = r.getTitle();
Toast.makeText(MainActivity.this, "text", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onFailure(Call<MoviesResult> call, Throwable t) {
t.printStackTrace();
}
});
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener = ((menuItem) -> {
Fragment selectedFragment = null;
switch (menuItem.getItemId()) {
case R.id.frame_container:
selectedFragment = new MovieFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, selectedFragment).commit();
return true;
});
}
В этом фрагменте я хочу получить данные из MainActivity и добавить их в свое текстовое представление. Код моего фрагмента:
package com.example.view.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.workingproject.R;
import retrofit.MoviesResult;
public class MovieFragment extends Fragment {
private TextView textView;
private OnDataSetListener listener;
public interface OnDataSetListener {
void sendData(String data);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_movies, container, false);
textView = view.findViewById(R.id.text_view);
return view;
}
}