У меня есть приложение, которое использует два вида деятельности. Проблема с кодом заключается в том, что как первое, так и второе действие раздувают один и тот же фрагмент, хотя ViewPager присваивается другое значение в методе onCreate. Согласно документации, я должен изменить ViewGroup при накачивании второго фрагмента. Любые предложения, как это сделать?
код от MainActivity. java
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private SectionsStatePagerAdapter mSectionsStateAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "OnCreate: started");
mSectionsStateAdapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.containter);
setupViewPager(mViewPager);
}
...
код от SecondActivity. java
public class SecondActivity extends AppCompatActivity {
private static final String TAG = "SecondActivity";
private SectionsStatePagerAdapter sSectionsStateAdapter;
private ViewPager sViewPager;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
Log.d(TAG, "OnCreate: started");
sSectionsStateAdapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
sViewPager = (ViewPager) findViewById(R.id.nadzorna_plosca);
setupViewPager(sViewPager);
}
...
Тогда фрагменты для MainActivitiy надуваются в
<androidx.viewpager.widget.ViewPager
android:id="@+id/containter"
android:layout_width="match_parent"
android:layout_height="match_parent" />
и для SecondActivity соответственно
<androidx.viewpager.widget.ViewPager
android:id="@+id/nadzorna_plosca"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Наконец два фрагмента надуваются с помощью приведенного ниже фрагмента, изменяющегося на R.layout.fragment_nadzorna_plosca для второго действия
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_wellcome_screen,
container, false);
Также включает метод OnCreateView из фрагмента, который переключается на второе действие.
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_wellcome_screen,
container, false);
btnNavWell_Napravo = (Button) root.findViewById(R.id.gumb_wellcome_isci_napravo);
btnNavWell_Naprej = (Button) root.findViewById(R.id.gumb_wellcome_vstopi);
btnNavWell_Napravo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Iskanje naprave",
Toast.LENGTH_LONG).show();
((MainActivity) getActivity()).setViewPager(1);
}
});
btnNavWell_Naprej.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Naprej v aplikacijo",
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getActivity(), SecondActivity.class);
startActivity(intent);
}
});
And SectionsStateViewPagerAdapter
public class SectionsStatePagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
SectionsStatePagerAdapter(@NonNull FragmentManager fm) {
super(fm);
}
void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@NonNull
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentTitleList.size();
}
}