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

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

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

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

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

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

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

我会稍微详细解释一下。

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

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

【问题讨论】:

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

标签: android android-fragments fragment


【解决方案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 上触发一个动作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多