要将内容传达给您的托管 Activity
,Android Docs建议让您的 Activity
实现一些接口(interface),并将其转换为您的 Fragment
中的该接口(interface):
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
}
}
但是,如果您的 Activity
是许多 Fragment
的宿主,您的 Activity
声明将类似于:
public class MainActivity extends Activity implements ListenerA, ListenerB, ListenerC /* etcetera */
当然,这无助于提高可读性、模块化等,更不用说将所有已实现的方法都塞进 Activity
的主体本身了。
有没有更好的方法来实现这一点?
如果我没记错的话,建议不要手动为 Fragment
设置监听器,尽管我找不到这方面的来源。
最佳答案
我可以想到两种实现沟通的方法,但我认为它们可能是不好的做法,所以请谨慎对待!
第一种方法是使用 getActivity() 获取对更新它的 Activity 方法的引用。您只需要注意 fragment Activity 引用当前不为空即可。
第二种是使用广播通知 Activity 某些内容已更改,并使用广播接收器根据收到的广播执行不同的操作。 (似乎有点矫枉过正)。
关于android - Activity fragment 通信 : cluttering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643762/