在父Activity onBackPressed方法中调用Fragment接口方法
Posted
技术标签:
【中文标题】在父Activity onBackPressed方法中调用Fragment接口方法【英文标题】:Calling Fragment interface method in parent Activity onBackPressed method 【发布时间】: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。
【问题讨论】:
【参考方案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);以上是关于在父Activity onBackPressed方法中调用Fragment接口方法的主要内容,如果未能解决你的问题,请参考以下文章
android中使用startactivityforresult跳转Activity后需要重写onBackPressed()方法
如何为Android Fragments(Tabs Activity)实现onBackPressed