如何使用菜单按钮将数据从活动传递到android中的片段?

Posted

技术标签:

【中文标题】如何使用菜单按钮将数据从活动传递到android中的片段?【英文标题】:How to pass data from activity to fragment in android using menu button? 【发布时间】:2020-07-20 11:59:03 【问题描述】:

我有这些活动:

    登录活动

    主活动

    个人资料活动

MainActivity 包含 4 个片段:PersonalFragment、PasswordFragment、SettingsFragment 和 FacilityFragment。

在 PersonalFragment 中,有 4 个按钮菜单,其中一个指向 ProfileActivity。

ProfileActivity 包含 3 个片段:ProfileDetailFragment、FamilyFragment 和 EducationFragment。

这是我的应用程序的过程:

当我启动 LoginActivity 并成功登录时,服务器向我发送了令牌以访问来自 Web 服务的数据。我已经拿到令牌了。然后,我想获取我想从 API 获取的所有数据并将其显示在 ProfileDetailFragment 中。这个过程需要我在MainActivity中点击PersonalFragment然后它会打开ProfileActivity,它首先会显示ProfileDetailFragment。

我尝试过的:

    将令牌从 LoginActivity 传递到 MainActivity 并使用 Toast.makeText 显示它。这个成功了

    像这样传递我存储在 MainActivity 新变量中的令牌结果:

Bundle bundle = new Bundle();
bundle.putString("token", token);
ProfileDetailFragment fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

在 ProfileDetailFragment 中:

String strtext = getArguments().getString("token");  

但是,仍然返回 null。

    我也尝试过一步一步地传递它,比如从 LoginActivity 到 MainActivity、PersonalFragment、ProfileActivity,最后是 ProfileDetailFragment。

有什么适合我的解决方案吗:(。仅供参考:我已经阅读了之前的问题和文档,但仍然返回 null。谢谢

【问题讨论】:

如果您的令牌需要在所有屏幕中,那么我建议在登录成功后将其存储在 sharedprefrence 中 @ShwetaChauhan 好的,我试试,谢谢 【参考方案1】:

当您成功登录应用程序时,此时只需将您的令牌存储在SharedPreference,您可以在所有屏幕上使用相同的令牌,因此无需传入Intent。请记住在退出表单应用程序之前清除首选项。

【讨论】:

【参考方案2】:

对于要存储在缓存中的内容,轻松检索,对于大多数屏幕,您可以使用SharedPreferences

对于activity之间的一次数据传递,我推荐你使用Intent

对于需要来自其他来源的数据的片段,您可以使用Bundle

【讨论】:

以上是关于如何使用菜单按钮将数据从活动传递到android中的片段?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从一个活动传递到android中的另一个活动片段? [复制]

如何将值从基本适配器传递到 Android 中的 Activity

如何使用数据库将大量数据从一个活动传递到android中的另一个活动

如何将数据从活动 A 传递/保存到 B,然后再传递到 B?

按下后如何将数据从第二个活动传递到第一个活动? - 安卓

如何将数据从Main活动传递到另一个活动