【问题标题】:How to manage android app with one activity and many fragments?如何管理具有一个活动和多个片段的android应用程序?
【发布时间】:2015-09-11 14:25:28
【问题描述】:

我需要一些有关如何管理具有一个活动和许多片段的 android 应用程序的帮助。 我选择这种模式是因为我认为它可以使应用程序更加快速和高效(至少我从我对片段的阅读中发现了这一点),但我坚持自己的第一步。

事实是:

  • 我有一个主要活动来管理工具栏和导航抽屉(左滑动菜单),它是一个片段,并且有一个 FrameLayout(在活动的 xml 中)来包含各种片段
  • 导航抽屉的每个声音都应该打开一个新片段
  • 片段应该彼此共享数据(所以活动是桥梁,对吧?)

现在: 如果要在 Fragment 之间交换数据,我应该使用 Activity 作为桥梁,实现一个接口让 Fragment-Activity 相互通信,那么 Activity 如何实现多个接口来与 Fragment 上的更多通信和交换数据?

IE:

假设我有一个 HomeFragment,它是应用程序的主视图。 在这个片段中,我有一个处理项目列表的 RecyclerView

如果我单击列表中的一项,我应该打开一个新片段(全屏大小,以便新片段完全替换 HomeFragment),显示有关单击的项目的一些详细信息。

我不能这样做,因为我的 Activity 已经实现了 navigationDrawer 的接口,那么我该如何在片段和 Activity 之间交换数据?

PS:对不起,我的英语不好,我希望我已经清楚了

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    一个activity可以实现任意多个它喜欢的片段,例如:

    public class MyActivity extends FragmentActivity implements
        AppleFragment.OnAppleInteractionListener, 
        OrangeFragment.OnOrangeInteractionListener {    
    
        @Override
        public void onAppleInteraction(int quantity_sold) {
        }
    
        @Override
        public void onOrangeInteraction(int quantity_sold) {
        }
    }
    

    上面的代码显示了您可以多么轻松地使用一个活动来实现两个片段。

    在单独的文件中,您必须像这样定义片段:

    public class AppleFragment extends Fragment {
        public interface OnAppleInteractionListener {
        void onAppleInteraction(int quantity_sold);
        }
    }
    

    public class OrangeFragment extends Fragment {
        public interface OnOrangeInteractionListener {
        void onOrangeInteraction(int quantity_sold);
        }
    }
    

    【讨论】:

    • 但是......我认为java只允许实现一个接口o.O对不起,我对此非常了解。谢谢你的回答!
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2018-06-25
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多