getParentFragment API 16

 oo欣呐呐 发布于 2023-02-12 20:38

我们都知道getParentFragmentFragment是API 17推出.

那么如果我们想要在API 16及更低版本中获取父片段呢(考虑到我使用native Fragment支持FragmentStatePagerAdapter并且嵌套片段没有问题)

还有比我更好的方法吗?

在父母:

public class ParentFragment extends Fragment {

public static ParentFragment StaticThis;
...

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

StaticThis = this;

...
}

在孩子:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
         parentFragment = (ParentFragment) getParentFragment();
else
         parentFragment = ParentFragment.StaticThis;

Rarw.. 5

如果你想在你从"项目"顶嘴基于您的评论ViewPager(我猜这是Fragment)到的容器,ViewPager这是一个FragmentActivity你可以用一个接口.

(1)声明接口Fragment本身或作为单独的文件(2)"初始化"片段的onAttach方法中的接口.例如

 private SomeInterface blah;

 @Override
 public void onAttach(Activity activity){
    blah = (SomeInterface) activity;
 }

(3)在你的实现界面FragmentActivity.

然后你可以回复FragmentActivity你的Fragment.从那里你可以调用你想要的任何方法FragmentActivity,如果你获得了加载到你的ViewPager任何其他片段的引用,请调用其中的任何公共方法Fragment.这允许您在片段和容器之间进行通信而不会发生内存泄漏.

1 个回答
  • 如果你想在你从"项目"顶嘴基于您的评论ViewPager(我猜这是Fragment)到的容器,ViewPager这是一个FragmentActivity你可以用一个接口.

    (1)声明接口Fragment本身或作为单独的文件(2)"初始化"片段的onAttach方法中的接口.例如

     private SomeInterface blah;
    
     @Override
     public void onAttach(Activity activity){
        blah = (SomeInterface) activity;
     }
    

    (3)在你的实现界面FragmentActivity.

    然后你可以回复FragmentActivity你的Fragment.从那里你可以调用你想要的任何方法FragmentActivity,如果你获得了加载到你的ViewPager任何其他片段的引用,请调用其中的任何公共方法Fragment.这允许您在片段和容器之间进行通信而不会发生内存泄漏.

    2023-02-12 20:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有