【问题标题】:Calling Fragment interface method in parent Activity onBackPressed method在父Activity onBackPressed方法中调用Fragment接口方法
【发布时间】:2016-11-27 04:24:42
【问题描述】:

我有一个扩展 AppCompatActivity 的 Activity。而且在这个活动中,我有一个 ViewPager 像这样填充:

private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new Tab1(), "Tab1");
        adapter.addFragment(new Tab2(), "Tab2");
        adapter.addFragment(new Tab3(), "Tab3");
        viewPager.setAdapter(adapter);
    }

在我的选项卡片段中,我有一个 RecyclerView,它使用一些库实现了多项选择。 我想通过按下硬件后退按钮来实现选择模式的关闭。

我的 Fragment 中有这个函数:

public void closeSelectMode() {
        if(mMultiSelector.isSelectable())
            setSelection(mMultiSelector);
       super.onBackPressed();
    }

但是我不知道怎么把这个函数放在父Activity onBackPressed()中。

我也尝试使用 Fragment 接口来实现这一点,但我不知道如何将接口函数的实现放在 onBackPressed 函数中到父 Activity。

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    您可以通过这种方式覆盖 Activity 的 onBackPressed:

    @Override
    public void onBackPressed() {
        Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment_name);
        if (fragment instanceof YourFragment) {
            YourFragment yourFragment = (YourFragment) fragment;
            yourFragment.closeSelectMode();
        } else {
            super.onBackPressed();
        }
    }
    

    【讨论】:

    • 哇,谢谢!它很酷!但不是 Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment_name);我使用 fragment = adapter.getItem(0);
    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多