希望你们能为我澄清一些问题。
我已经使用Android大约6个月了,但仍然对Activity和Fragment之间的最佳通信方式感到困惑。我已经阅读了安卓开发者网站上的信息。
从Fragment到Activity
现在我可以百分之百确定,接口是从Fragment到Activity进行通信的最佳方式。也就是说,在Fragment中创建一个接口并让Activity实现它。这样,您就可以在Fragment中调用接口中的方法,并由Activity(实现接口)处理它。
从Activity到Fragment
在这里,我不确定。安卓开发者网站说,为了与Fragment通信,必须将对象放入Bundle中。
我已经使用Android大约6个月了,但仍然对Activity和Fragment之间的最佳通信方式感到困惑。我已经阅读了安卓开发者网站上的信息。
从Fragment到Activity
现在我可以百分之百确定,接口是从Fragment到Activity进行通信的最佳方式。也就是说,在Fragment中创建一个接口并让Activity实现它。这样,您就可以在Fragment中调用接口中的方法,并由Activity(实现接口)处理它。
从Activity到Fragment
在这里,我不确定。安卓开发者网站说,为了与Fragment通信,必须将对象放入Bundle中。
Bundle bundle = new Bundle();
bundle.putInt(SOME_IDENTIFIER, myInt);
现在,当我需要将某些功能分离出来时,我会使用单例类。例如,我有一个名为PersistenceService
的单例类,用于处理所有与持久性相关的内容,例如,在SharedPreferences
中保存某些东西。然后,PersistenceService
将具有像putMyString(String key, String myString)
或putSomeObject(String key, SomeObject someObj)
这样的方法。这样,一个类不必自己处理持久性,只需调用PersistenceService
即可。
假设我需要更新Fragment中的TextView或其他内容,我会这样做:
String myString = PersistenceService.getInstance(getActivity()).getMyString(someKey);
textView.setText(myString);
我传递一个上下文(getActivity()
),因为我需要它来获取SharedPreferences
。
现在我的实际问题是:
我应该在Activity中检索数据并通过Bundle将其传递给所需的Fragment吗?还是我直接在Fragment中引用我的Singleton,并直接访问数据。
我并没有被卡住,但我想知道你们会推荐什么。 非常感谢任何建议、备注、信息等。