Проблема: Наличие SwipeView внутри фрагмента (поэтому, когда фрагмент активен, вы можете переключаться между некоторыми другими фрагментами)
Что я пробовал: Я пытался реализуя его так же, как обычно, но во фрагменте:
НОРМАЛЬНЫЙ ПУТЬ:
public class MainActivity extends FragmentActivity {
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
SwipeAdapter swipeAdapter = new SwipeAdapter(getSupportFragmentManager());
viewPager.setAdapter(swipeAdapter);
}
}
THE СПОСОБ Я ПОПРОБОВАЛ С ФРАГМЕНТОМ:
public class SecondFragment extends Fragment {
ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_first, container, false);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
viewPager = view.findViewById(R.id.VIEWPAGER);
SwipeAdapter swipeAdapter = new SwipeAdapter(getChildFragmentManager());
viewPager.setAdapter(swipeAdapter);
}
}
ОШИБКА: Возвращает «нулевую ссылку на объект», когда я пытаюсь установить адаптер (полагаю, у него проблемы с FragmentManager)
АДАПТЕР ДЛЯ ОБОИХ ПРИМЕРОВ:
public class SwipeAdapter extends FragmentStatePagerAdapter {
public SwipeAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new PageFragment();
Bundle bundle = new Bundle();
bundle.putInt("count", position+1);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return 5;
}
}
В основной активности Я настроил так, чтобы вы могли переключать фрагменты с помощью кнопок, и то, что я пытаюсь реализовать во втором фрагменте, - это возможность пролистывать фрагменты с помощью SwipeView
ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ КОД:
public class MainActivity extends AppCompatActivity {
Button firstFragment, secondFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstFragment = (Button) findViewById(R.id.firstFragment);
secondFragment = findViewById(R.id.secondFragment);
firstFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new FirstFragment());
}
});
secondFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new SecondFragment());
}
});
}
private void loadFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.frameLayout, fragment);
fragmentTransaction.commit();
}
}
Я не знаю, правильно ли это делать, но есть ли у кого-нибудь способ мак Любая помощь будет полезна, спасибо!