如何在activity中获取fragment的控件,然后修改控件的内容,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在activity中获取fragment的控件,然后修改控件的内容,相关的知识,希望对你有一定的参考价值。

在一个activity中有两个fragment,开始显示第一个fragment,滑动翻页后显示第二个fragment,我先在实现滑动翻页时修改第二个fragment中控件的内容,但是在宿主activity中无法获得fragment里的控件,那么如何在activity中获取fragment的控件呢?不知道怎么用findviewbyid来获取

参考技术A 你的Activity里面注册过fragment吗?
像这样========》

private void InitViewPager()
mPager = (ViewPager) findViewById(R.id.vPager);
fragmentsList = new ArrayList<Fragment>();

Fragment activityfragment = TestFragment.newInstance("Hello Activity.");
Fragment groupFragment = TestFragment.newInstance("Hello Group.");
Fragment friendsFragment=TestFragment.newInstance("Hello Friends.");
Fragment chatFragment=TestFragment.newInstance("Hello Chat.");

fragmentsList.add(activityfragment);
fragmentsList.add(groupFragment);
fragmentsList.add(friendsFragment);
fragmentsList.add(chatFragment);

mPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList));
mPager.setCurrentItem(0);
mPager.setOnPageChangeListener(new MyOnPageChangeListener());
参考技术B 你的滑动翻页是用什么做的?ViewPager?追问

恩恩,对的,

追答

你可以在ViewPager切换页面时发送一个广播,在第二个fragment中注册一个广播,在广播中改第二个fragment控件的内容。

本回答被提问者采纳

Fragment 和 Activity 之间通信

在 Activity 中获取 Fragment 实例:

  FragmentManager 提供了一个类似于 findViewById 的方法,专门用于从布局文件中获取 Fragment 实例:

//通过挂载点的容器id获取对应的 Fragment 实例
RightFragment rightFragment = (RightFragment) getSupportFragmentManager().findFragmentById(R.id.right_fragment);

 

在 Fragment 中获取 Activity 实例:

  Fragment 中提供了一个 getActivity 方法,用于获取托管该 Fragment 的 Activity 实例:

MainActivity activity = (MainActivity) getActivity();

 

以上是关于如何在activity中获取fragment的控件,然后修改控件的内容,的主要内容,如果未能解决你的问题,请参考以下文章

Android fragment控制activity中的控件

android 怎么在自定义控件中获取控件所在fragment的实例

Android开发,怎么在activity中获取fragment中的imageview

从 Fragment 获取 Activity 的布局并阻止其所有子项

如何在android中获取Fragment的包名(不是Activity的)[重复]

使用Fragment时如何获取控件Id以及如何跳转