раздувание разных фрагментов - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть приложение, которое использует два вида деятельности. Проблема с кодом заключается в том, что как первое, так и второе действие раздувают один и тот же фрагмент, хотя 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();
    }
}
...