menuItemclick上从Activity(Activity->Fragment->Fragment)向Fragment的Fragment发送数据

Posted

技术标签:

【中文标题】menuItemclick上从Activity(Activity->Fragment->Fragment)向Fragment的Fragment发送数据【英文标题】:Sending data to Fragment of Fragment from Activity (Activity->Fragment->Fragment) on menuItemclick 【发布时间】:2018-04-14 17:38:22 【问题描述】:

我正在尝试将数据从 MainActivity(在 MenuItem 单击时)发送到其子片段的片段。

我展示了一张图片以便更好地理解。

我希望在单击 MainActivity 菜单时从 MainActivity 在 DayFragment 中触发一个事件。

如您所知,在创建片段时我无法发送。

任何理解这个想法的想法(或)代码都会有所帮助。

伙计们,反对票对你和我都没有帮助。

我会稍微详细解释一下。

我将在单击 MainActivity 的菜单项上显示一个日期选择器对话框片段。我需要从 MainActivity -> calendarfragment -> dayfragment 传递日期。

我希望将 dayfragment 中的日期用于其他进程。就是这样。

【问题讨论】:

你能通过编辑这个问题发布你的代码吗?请向我们展示您尝试做的事情。 你可以使用接口 不幸的是,我无法发布代码,相应文件上还有很多其他代码,我只需要逻辑。谢谢迪玛。 【参考方案1】:

在 Fragment 中创建一个公共方法,Activity 将在项目选择时调用该方法。

从该公共方法中,使用 ChildFragment 的实例,调用 ChildFragment 内的另一个公共方法以使魔法发生!

你可以使用Fragment.setTarget(Fragment fragment, int requestCode);,以防万一

【讨论】:

【参考方案2】:

使用捆绑包。这是一个示例:

Fragment fragment = new Fragment(); // replace your custom fragment class 
Bundle bundle = new Bundle();
FragmentTransaction fragmentTransaction = getSupportFragmentManager(). beginTransaction();
bundle.putString("key","value"); // use as per your need
fragment.setArguments(bundle);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(viewID,fragment);
fragmentTransaction.commit();

Bundle 为许多数据类型提供了 put 方法。

然后在您的片段中,检索数据(例如在 onCreate() 方法中)

Bundle bundle = this.getArguments();
if (bundle != null) 
        int myInt = bundle.getInt(key, defaultValue);

【讨论】:

无法使用。创建片段时我不想要数据。我想在 MainActivity 上触发一个动作。

以上是关于menuItemclick上从Activity(Activity->Fragment->Fragment)向Fragment的Fragment发送数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在pycharm python上从3到6的按钮进行乘法和求和

弹出菜单(PopUp Menus)

Python Django:在数据库save()上从服务器向客户端发送消息

在单行上从 jq 获取输出

如何在 Linux 上从 NetworkManager 切换为 systemd

在远程集群上从 Spark 运行 hive 查询时,客户端无法通过以下方式进行身份验证:[TOKEN, KERBEROS]