如何将参数从 Activity 传递到 Fragment 中的函数

双垣频道

我想将我的参数从活动传递到片段,我该怎么做?

活动.java

fragment.getViewProfileMainActivity(SendViewProfileName, SendViewProfileEmail, SendViewProfilePhone, SendViewProfileCity, SendViewProfileGender, SendViewProfileBirthdate, SendViewProfilePhotoUrl);

片段.java

getViewProfileMainActivity(String Profile, ...);
木马扬克

为了在应用程序的各个组件之间传递消息,我强烈建议您使用使用EventBus的发布者/订阅者的经验丰富的解决方案

  • 要将 EventBus 添加为项目中的依赖项,请在应用级 build.gralde 文件中添加以下行:
    implementation 'org.greenrobot:eventbus:3.1.1'

请注意,在撰写此答案时,最新版本为 3.1.1。您应该从此处检查最新版本并将其包含在内。

  • 将您的事件类定义为一个简单的 POJO:
    public class MessageEvent {
        public final String message;

        public MessageEvent(String message) {
            this.message = message;
        }
    }
  • 在您的 Fragment 中,添加此代码以侦听事件
    // This method will be called when a MessageEvent is posted (in the UI thread for Toast)
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(MessageEvent event) {
        Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
        // do something here
    }
  • 在您的 Fragment 中,添加以下代码以在总线上注册和注销:
    @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onStop() {
        EventBus.getDefault().unregister(this);
        super.onStop();
    }
  • 最后,从您的 Activity 中发布事件:
    EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

您的 Fragment 将收到此消息。


对于您的特定示例,您可以按如下方式进行:

  • 您的事件 POJO 类应该是:
    public class MessageEvent {
        public final String SendViewProfileName;
        public final String SendViewProfileEmail;
        // similarly other params

        public MessageEvent(String SendViewProfileName, String SendViewProfileEmail, ...) {
            this.SendViewProfileName = SendViewProfileName;
            this.SendViewProfileEmail = SendViewProfileEmail;
            // similarly other params
        }
    }
  • 当事件发生时,您可以在 Fragment 中执行所需的方法,如下所示:
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(MessageEvent event) {
        getViewProfileMainActivity(event.SendViewProfileName, ...);
    }

    private getViewProfileMainActivity(Profile, ...) {
         // your function definition here
    }
  • 在您的活动中,您可以将事件发布为:
    EventBus.getDefault().post(new MessageEvent(SendViewProfileName, SendViewProfileEmail, ...));

希望这可以帮助!

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android如何将Activity.class传递为函数的参数

如何将Activity传递给Fragment中的newInstance

如何将参数从vimscript函数传递到python接口?

如何将参数传递到ETL作业中?

将变量从MainActivity传递到另一个Activity到选项卡Fragment

如何将Acitivity的onResponse函数中的数组对象传递给Fragment?

Android存储库模式:如何将额外的数据传递给Fragment / Activity

将数据从Activity传递到Fragment不会显示任何内容

如何从Fragment或Activity调用suspend函数?

如何将参数传递到历史推送中

如何将参数从子例程传递到VBA中的函数?

如何将参数从JS函数传递到PHP代码

将ArrayList从Fragment类传递给Activity

如何将参数从FragmentActivity传递给Fragment

如何将参数传递到SPARQL查询中

将数据从Activity传递到Fragment(通过访问来自fragment的Activity),从而给出Class Cast Exception

如何将参数从构造函数传递到插槽?

将`SharedPreferences` 数据从 Fragment 传递到 Activity

如何通过解决错误“Activity 无法转换为 Fragment”将 Fragment 传递给类构造函数?

通过 FragmentPagerAdapter 将数据从 Activity 传递到 ViewPager 的 Fragment

如何将参数从 php 传递到 linux 中的脚本?

如何将请求参数从 URL 传递到在 JavaScript 中返回同名对象的函数?

如何从 Activity 到 Fragment 进行通信?

将接口从 Activity 传递到 Fragment

onActivityResult 从 Activity 到 Fragment

如何将参数从命令行传递到 python 中的主函数

Kotlin:如何从 Fragment 导航到 Activity

Kotlin如何将参数传递给Adapter中的函数onClick到ViewHolder?

这种通过接口将数据从 Activity 传递到 Fragment 的方法如何在幕后工作?