Я пытаюсь создать слайдер для приложения. Но у меня есть проблемы с этим.
Сначала я создаю упражнение с 3 фрагментами.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);
bottomNavigationView.setOnNavigationItemSelectedListener
(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.action_item1:
selectedFragment = Statistique.newInstance();
break;
case R.id.action_item2:
selectedFragment = Acceuil.newInstance();
break;
case R.id.action_item3:
selectedFragment = Investisseur.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
return true;
}
});
//Manually displaying the first fragment - one time only
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, Acceuil.newInstance());
transaction.commit();
//Used to select an item programmatically
bottomNavigationView.getMenu().getItem(1).setChecked(true);
}
И в одном из фрагментов я создаю панель просмотра для создания моего слайдера.
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="15dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginStart="15dp"
app:layout_constraintBottom_toTopOf="@+id/button3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view" />
Во фрагменте Acceuil.java
public class Acceuil extends Fragment {
public Acceuil() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static Acceuil newInstance() {
Acceuil fragment = new Acceuil();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_acceuil, container, false);
ViewPager viewPager = view.findViewById(R.id.viewPager);
Log.d("myTag", "Start to go in DotIndicatorPagerAdapter");
viewPager.setAdapter(new DotIndicatorPagerAdapter());
Log.d("myTag", "Stop to go in DotIndicatorPagerAdapter");
return inflater.inflate(R.layout.fragment_acceuil, container, false);
}
public void sendToContact(View view) {
Intent intent = new Intent(getContext(), Contact.class);
startActivity(intent);
}
public void sendToAutorisation(View view) {
Intent intent = new Intent(getContext(), Autorisation.class);
startActivity(intent);
}
}
Я создаю класс расширения PagerAdapter для получения пользовательского Viewpager.
public class DotIndicatorPagerAdapter extends PagerAdapter {
private static final List<Integer> items =
Arrays.asList(R.layout.material_page1, R.layout.material_page2, R.layout.material_page3);
@NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) {
Log.d("myTag", "Passed into THE function");
View item = LayoutInflater.from(container.getContext())
.inflate(items.get(position), container, false);
container.addView(item);
return item;
}
@Override public int getCount() {
return items.size();
}
@Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
Log.d("myTag", "Passed into isViewFromObject");
return view == object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
Log.d("myTag", "Passed into destroyItem");
container.removeView((View) object);
}
}
Проблемы возникают сейчас, когда я запускаю код, я могу выполнить действие с 3 фрагментами, но слайдер во фрагменте не создан, я пытаюсь отладить его с помощью некоторого отпечатка и вижу, что он не пошел в instantiateItem .
Я нахожусь здесь с 1 дня, я пытался найти решение в Google, но это не решило мою проблему. Вот почему мне нужна ваша помощь;)
EDIT:
Я сделал несколько новых тестов, и мне удалось заставить его работать с viewpager в Activity, но он не работает, когда я пытаюсь сделать это с viewpager во фрагменте.