如何使用菜单按钮将数据从活动传递到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