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

时间:2020-04-08 06:25:28

标签: android android-fragments android-activity android-fragmentactivity

我有以下活动:

  1. LoginActivity

  2. MainActivity

  3. ProfileActivity

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

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

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

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

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

我尝试过的事情:

  1. 将令牌从LoginActivity传递到MainActivity并与Toast.makeText显示。这成功了

  2. 将我存储在MainActivity中新变量中的令牌结果传递给这样:

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

和ProfileDetailFragment中的

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

但仍然返回null。

  1. 我还尝试将它逐步从LoginActivity传递到MainActivity,PersonalFragment,ProfileActivity,最后是ProfileDetailFragment。

对我来说有什么解决方法吗:(。仅供参考:我已经阅读了前面的问题和文档,但仍然返回null。谢谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  • 对于两次活动之间的数据传递,我建议您使用Intent

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