为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得当前显示的片段?

如何获得当前显示的片段?

30秒到达战场 2019-07-08 15:48:54
如何获得当前显示的片段?>>> import os>>> print os.nameposix>>> import platform>>> platform.system()'Linux'>>> platform.release()'2.6.22-15-generic'.的输出platform.system()如下:Linux:Linux麦克:Darwin窗户:Windows见:平台-访问底层平台的标识数据我在玩Android的片段。我知道我可以通过使用以下代码来更改片段:FragmentManager fragMgr = getSupportFragmentManager();FragmentTransaction fragTrans = fragMgr.beginTransaction();MyFragment myFragment = new MyFragment(); //my custom fragmentfragTrans.replace(android.R.id.content, myFragment);fragTrans.addToBackStack(null);fragTrans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);fragTrans.commit();我的问题是,在Java文件中,如何获得当前显示的片段实例?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

我知道这是个老职位,但以前也有麻烦。找到了一个解决方案,该解决方案是在onBackStackChanged()听功能

  @Override
    public void onBackPressed() {
        super.onBackPressed();

         Fragment f = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container);
      if(f instanceof CustomFragmentClass) 
        // do something with f
        ((CustomFragmentClass) f).doSomething();

    }

这对我有效,因为我不想迭代每一个片段,我必须找到一个是可见的。希望它也能帮到别人。


查看完整回答
反对 回复 2019-07-08
?
浮云间

TA贡献1829条经验 获得超4个赞

下面是我的解决方案,我发现这对于低片段场景很方便。

public Fragment getVisibleFragment(){
    FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
    List<Fragment> fragments = fragmentManager.getFragments();
    if(fragments != null){
        for(Fragment fragment : fragments){
            if(fragment != null && fragment.isVisible())
                return fragment;
        }
    }
    return null;}


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 430 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信