我们多次使用Intent将数据发送到Fragment或从子进程中获取数据。我们不能把数据放在公共变量中吗? 例如,想象一下我们是否想从对话框中获取用户数据。
我只是在谈论“可能性”。毫无疑问,它优于使用意图来实现代码清洁或安全......
答案 0 :(得分:1)
你没有将意图发送给片段,如果你想使用对象实现Parcelable
所需的对象,那么你可以在意图包中发送对象
答案 1 :(得分:1)
我认为他的意思是发送(本地)广播...这是根据我的理解这样做的正确方式。
当然可以使用公共(甚至受保护)字段并使用以下内容从子片段访问它们:
假设您的父活动已命名为" MainActivity"
((MainActivity) getActivity()).mMyPublicField
或:
((MainActivity) getActivity()).getPublicMethod()
- 但我绝不会建议这样做! 特别是当你也开始操作公共字段时,当不同的线程在进行时,你会遇到难看的麻烦。
如果需要在整个应用程序中共享某些内容,请使用 SharedPreferences (如果您还想将其存储到下一个应用程序会话中),或者正如我先提到的那样 LocalBroadCastManager
答案 2 :(得分:1)
public class MyActivity extends Activity {
public int someValue = 1;
}
在任何以MyActivity
为主机的片段中,您都可以访问((MyActivity) getActivity()).someValue
。