android activity中怎么调用fragment中的控件

android activity中怎么调用fragment中的控件,第1张

首先在Activity中实例化Fragment

ExampleFragment exFragment = (Fragment)getFragmentManager()findFragmentById(fragmentID);

然后获取Fragment中的控件

TextView tv =(TextView) exFragmentgetView()findViewById(tvID);

```

这样就OK了

1、通过一些通信工具 如eventbus,这个是可以任意页面 组件通信

2、通过获取实例的方式

fragment通过getActivity()方法来获得Activity的实例,然后可以获取到此activity中的静态方法变量,也可以获取到它页面的控件

同理 在activity中通过ExampleFragment fragment = (ExampleFragment) getFragmentManager()findFragmentById(Ridexample_fragment);

获取到fragment实例

此种方式也用在同一个activity 中的两个fragment中通讯

首先在一个Fragment中可以得到与它相关联的Activity,然后再通过这个Activity去获取另外一个Fragment的实例,这样就实现了不同Fragment之间的通信。

3、通过回调的方式(这个需要学习回调怎么用):

一些情况下,可能需要fragment和activity共享事件,一个比较好的做法是在fragment里面定义一个回调接口,然后要求宿主activity实现这个接口。当activity通过这个接口接收到一个回调,它可以让同布局中的其他fragment分享这个信息。

4、通过Bundle传值

Activity在切换Fragment的时候,通过setArguments向Fragment传递参数,Fragment通过getArguments();获得从activity中传递过来的值

5、在applaction中定义需要的数据和方法,applcation是每个类 页面都可以访问到的

6、contentprovider 数据库 shareperence 等很多 大致常用的也就这些了

问题 :当一个 Activity 中包含一个 Fragment 时我们使用 startActivityForResult() 方法启动一个 Activity ,待这个被启动的 Activity 设置了一个返回值然后被销毁,如何在Activity和Fragment中获得这个返回值呢?

分析 :启动 Activity 时,我们一般会设置一个 requestCode 以便在开启了多个具有返回值的 Activity 时进行识别以做出不同的响应对策。但使用不同的启动方式,在 Activity 和 Fragment 中拦截到的结果不同,主要有以下几种情况:

注意 :对于3来说,如果在 Activity 的 onActivityResult() 方法中没有调用 superonActivityResult() 方法,那么在 Fragment 中不能获取任何数据,在 Activity中 可以获得数据但是无法根据 requestCode 去识别,传入的是一个6位的 requestCode

总结

参考

相关资料

Demo

在构造方法,或者set方法等注入fragment,类似很多自定义控件使用Context一样。

可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。

使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment)。

Activity不能直接跳转到Fragment,只能够先跳到指定的activity,在intent中指明你要显示的Fragment, 再在此activity 内,显示这个Fragment。

以上就是关于android activity中怎么调用fragment中的控件全部的内容,包括:android activity中怎么调用fragment中的控件、Android activity与fragment之间通信的好的方法有哪些、Activity中包含Fragment时startActivityForResult()等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9334803.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存