Android Fragment间高效简易传值简述
本文最后更新于 151 天前,其中的信息可能已经有所发展或是发生改变。

在 Fragment 之间传递数据  |  Android 开发者  |  Android Developers (google.cn)

简单的说,在要接受数据的Fragment设置监听器,然后在发送数据的Fragment发送数据,接收端即使处于Pause状态也可以收到数据更新。发送和接收的数据都是一个Bundle。

接收端监听器代码:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getParentFragmentManager().setFragmentResultListener("key", this, new FragmentResultListener() {
        @Override
        public void onFragmentResult(@NonNull String key, @NonNull Bundle bundle) {
            String result = bundle.getString("bundleKey");
            // 这里写对result的操作
        }
    });
}

代码解释:重写onCreate方法,在fragment处于create时注册FragmentResultListener,其中的key为发送端内对应的key,一个key对应一个数据,可以注册多个FragmentResultListener,监听多个不同key的数据。使用此方法传递的数据为一个bundle,这个bundle没有特殊性,可以放int,string,Serializable等类型的数据。

获取数据的流程为:①通过key获取bundle ②通过bundlekey获取bundle内的数据。

发送端代码:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Bundle result = new Bundle();
        result.putString("bundleKey", "result");
        getParentFragmentManager().setFragmentResult("key", result);
    }
});

代码解释:这段代码为设置按钮点击时发送数据。其中key与上文接收端内的key为同一个。

发送数据的流程为:①创建一个bundle,键值对为bundleKey和字符串”result”。②发送这个bundle,设置FragmentResult的键为key。

本文演示的Fragment具有同等地位,如果要在父级 Fragment 和子级 Fragment 之间传递结果,请参考文章开头的Google官方文章。

评论

  1. Windows Chrome 104.0.0.0
    3月前
    2022-8-19 15:37:30

    感谢分享,赞一个

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇