Я пытаюсь следовать руководству, опубликованному в первом ответе @ Har sh Ganatra здесь , но я не понимаю, как реализовать часть xml. Это мое действие:
public class MainActivity extends AppCompatActivity {
private int counter=0;
public static int currentIndex = 0;
private int currentApiVersion;
CustomViewPager viewPager;
ViewPagerAdapter adapter;
private void loadFragment(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new ViewPagerAdapter (MainActivity.this.getSupportFragmentManager());
adapter.addFragment(new HomeFragment(), "HOME");
adapter.addFragment(new PopularFragment(), "POPULAR");
adapter.addFragment(new PlayingFragment(), "PLAYING");
if(isNetworkAvailable()) viewPager.setCurrentItem(currentIndex);
else loadFragment(new NetworkNotAvailable());
viewPager = (CustomViewPager) findViewById(R.id.viewpager1);
viewPager.setAdapter(adapter);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.BottomNavigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment;
switch (item.getItemId()) {
case R.id.bbn_item1:
onResume();
currentIndex=0;
viewPager.setCurrentItem(currentIndex);
return true;
case R.id.bbn_item2:
currentIndex=1;
viewPager.setCurrentItem(currentIndex);
return true;
case R.id.bbn_item3:
currentIndex=2;
viewPager.setCurrentItem(currentIndex);
return true;
}
return false;
}
};
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
ApiService apiService = ApiBuilder.getClient(MainActivity.this).create(ApiService.class);
@Override
public void onReceive(Context context, Intent intent) {
counter+=1;
Call<MovieResponse> call = apiService.getPopular(Values.CATEGORY[0],BuildConfig.API_KEY,Values.LANGUAGE,counter);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {
final List<MovieModel> movies = response.body().getResults();
final RecyclerView recyclerView = findViewById(R.id.rc_view);
if (recyclerView !=null){
recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.content_main, getApplicationContext()));
}
}
@Override
public void onFailure(Call<MovieResponse>call, Throwable t) { }
});
}
};
@Override
protected void onStart() {
super.onStart();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.lab.movietime.Service");
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter);
}
@Override
protected void onStop() {
super.onStop();
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
}
@Override
protected void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
}
@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.lab.movietime.Service");
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter);
}
public boolean isNetworkAvailable() {
try{
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = null;
if(manager != null){
networkInfo = manager.getActiveNetworkInfo();
}
return networkInfo != null && networkInfo.isConnected();
}catch (NullPointerException e) {
return false;
}
}
@Override
public void onBackPressed() { }
}
Это макет xml основного упражнения, в котором я реализовал (наверняка неправильно) 1006 * CustomViewPager (до этого был только включают ). Это макет включения, который содержит FrameLAyout, где представлены мои три фрагмента:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/grey"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ll1"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/_80sdp"
android:layout_height="@dimen/_30sdp"
android:layout_marginTop="@dimen/_10sdp"
android:background="@drawable/logoss"
android:layout_gravity="center"/>
</LinearLayout>
<FrameLayout
android:layout_below="@+id/ll1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container"
android:layout_above="@id/bottombar"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/bottombar"
android:background="@color/dark"
android:orientation="vertical">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/BottomNavigation"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/_5sdp"
android:layout_gravity="bottom"
app:itemBackground="@color/dark"
android:foreground="?attr/selectableItemBackground"
app:itemTextColor="@animator/bottom_nav_color"
app:itemIconTint="@animator/bottom_nav_color"
app:menu="@menu/bottombar_menu_4items"/>
</LinearLayout>
</RelativeLayout>
Где я должен настроить CustomPageViewer?