如何使用此特定的寻呼机适配器使用后堆栈或获取getChildFragmentManager()?]

问题描述 投票:0回答:1

我正在使用Fragments更改应用程序中的场景,并且遇到了以下问题:当按下电话后退按钮时,应用程序将关闭。当按下后退按钮时,如何打开上一个片段。

我搜索了解决方案,有很多类似的使用getChildFragmentManager或反向堆栈的方法。我只是不知道如何为我的特定状态寻呼机适配器实现它,为此我遵循了youtube视频教程。

SectionsStatePagerAdapter.java:

public class SectionsStatePagerAdapter extends FragmentStatePagerAdapter {

    private final ArrayList<Fragment> mFragmentList = new ArrayList<>();
    private final ArrayList<String> mFragmentTitleList = new ArrayList<>();

    public SectionsStatePagerAdapter(@NonNull FragmentManager fm, int behavior) {
        super(fm, behavior);
    }

    public SectionsStatePagerAdapter(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);
    }

    public 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 mFragmentList.size();
    }
}

MainActivity.java:

public class MainActivity extends AppCompatActivity implements MyRecyclerViewAdapter.ItemClickListener {
    public SectionsStatePagerAdapter mSectionsStatePagerAdapter;
    private ViewPager mViewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Fragment Stuff:
        mSectionsStatePagerAdapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
        mViewPager = findViewById(R.id.container);

        //SetUpPager:
        setupViewPager(mViewPager);

    }


    private void setupViewPager(ViewPager viewPager){
        SectionsStatePagerAdapter adapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new MainPageFragment(),"MainPage"); //0
        adapter.addFragment(new CoffeePageFragment(),"CoffeePage"); //1
        adapter.addFragment(new RegularCoffeeFragment(),"RegularCoffeePage"); //2
        viewPager.setAdapter(adapter);
    }


    public void setViewPager(int fragmentNumber){
        mViewPager.setCurrentItem(fragmentNumber);
    }

}

CoffeePageFragment.java:

public class CoffeePageFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.content_coffee_page,container,false);
        btnRegularCoffee = view.findViewById(R.id.regular_coffee_button);


        btnRegularCoffee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((MainActivity)getActivity()).setViewPager(2);
            }
        });
        return (view);
    }
}

总之,当按下设备后退按钮时,它将如何回到上一个片段?

我正在使用Fragments更改应用程序中的场景,并且遇到了以下问题:当按下电话后退按钮时,应用程序将关闭。当背面...

java android android-layout
1个回答
0
投票

在先前版本的AppCompatActivity实现中,您可以在活动中覆盖onBackPressed(),较新的版本规定要实现OnBackPressedCallback,如下所示:https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher.html

© www.soinside.com 2019 - 2024. All rights reserved.