无法从父视图调用Fragment的方法

迪努卡·杰伊(Dinuka Jay)

我试图从其父视图调用Fragment的public方法,然后在Stack上遵循thisthis和这些问题。但是,当我尝试从父视图调用它时,我需要的方法不可行。

这是我的代码:

分段:

public class FirstTabView extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.activity_first_tab_view, container, false);
            return rootView;
    }

     //The method I need to call
     public void PostStuff(String caption){
     }
}

父视图:(其中包含主视图寻呼机)

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_view);

        pager = (ViewPager) findViewById(R.id.mainpager);
        mAdapter = new HomePagerAdapter(getSupportFragmentManager());
        pager.setAdapter(mAdapter);
        pager.setOffscreenPageLimit(4);

        //Getting the Fragment's Tag. o is the Pager's Fragment index. i.e.: The first fragment
        String fragment_tag = "android:switcher:" + pager.getId() + ":" + 0;
        FirstTabView fragment = (FirstTabView) getSupportFragmentManager().findFragmentByTag(fragment_tag);
        fragment.  <This is where I need to call the method and pass the parameter>   ();
        //The method however doesn't appear when I try to reference it
}

我是否可以从父视图正确调用Fragment的方法?我究竟做错了什么?

编辑

这是我用来推送片段的适配器:

public class HomePagerAdapter extends FragmentPagerAdapter {

        public HomePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int index) {

            switch (index) {
                case 0:
                    return new FirstTabView();
                case 1:
                    return new SecondTabView();
                case 2:
                    return new ThirdTabView();
                case 3:
                    return new FourthTabView();
                case 4:
                    return new FifthTabView();
            }

            return null;
        }

        @Override
        public int getCount() {
            // get item count - equal to number of tabs
            return 5;
        }

    }
什巴·普拉萨德(Shiba Prasad J.)

您可以将FirstTabView的引用保存到MainActivity,然后调用该片段的方法。

FirstTabView

public class FirstTabView extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.activity_first_tab_view, container, false);
            return rootView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        //set this fragment to your MainActivity
        MainActivity mainActivity = (MainActivity)getActivity();
        mainActivity.setFirstTabView(this);
    }


     //The method I need to call
     public void PostStuff(String caption){

     }
}

主要活动

private FirstTabView firstTabView;
@Override
public void onCreate(Bundle bundle) {
    ........
    if(firstTabView != null) {
        firstTabView.PostStuff("Hello World");
    }
}

public void setFirstTabView(FirstTabView firstTabView){
    this.firstTabView = firstTabView
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从父级中的@viewchildren 调用方法

来自分类Dev

如何从父级视图调用子级View方法?

来自分类Dev

我无法在Activity中调用方法Fragment

来自分类Dev

我无法从 Activity 调用 Fragment 方法

来自分类Dev

从父类调用main()方法

来自分类Dev

从父类调用main()方法

来自分类Dev

无法在使用实例的视图中调用方法?

来自分类Dev

Swift无法从父级更新视图

来自分类Dev

从xml调用视图模型方法无法调用android中的Issue

来自分类Dev

python从父方法调用子方法

来自分类Dev

Android 从 Fragment 调用 Fragment 方法

来自分类Dev

Typescript-从父类调用子方法

来自分类Dev

从父类中调用父方法

来自分类Dev

react:从父组件调用子组件的方法

来自分类Dev

从父类C#调用派生方法

来自分类Dev

C ++:从父实例调用子方法

来自分类Dev

C ++:从父实例调用子方法

来自分类Dev

如何从父类调用方法和属性?

来自分类Dev

从父级调用子级方法

来自分类Dev

用户控件从父窗体调用方法

来自分类Dev

如何从父类的基类调用方法

来自分类Dev

Python从父级调用扩展子方法

来自分类Dev

在子类中从父类调用方法

来自分类Dev

iOS-从父模式视图中调用功能

来自分类Dev

从父调用子方法,当从子调用父方法时

来自分类Dev

从Activity调用Fragment方法

来自分类Dev

从Activity调用Fragment方法

来自分类Dev

从 MainActivity 调用 Fragment 的方法

来自分类Dev

从 PopupMenu 调用 Fragment 方法