【问题标题】:Fragments Click Events Problems in androidandroid中的片段点击事件问题
【发布时间】:2017-08-25 21:36:39
【问题描述】:

我正在研究 andorid 中的片段概念。我正在将多个布局添加到一个 FrameLayout 中,

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack("web");
ft.setTransitionStyle(FragmentTransaction.TRANSIT_ENTER_MASK);
Fragment fragment = new TestFragment();
ft.setCustomAnimations(R.anim.right_to_left_remove, R.anim.right_to_left_add);
ft.add(R.id.test, fragment);
ft.commit();

我单击了fragment1 中的按钮,fragment2 在上面添加了fragment1,当单击fragment2 布局的同一区域而没有添加另一个片段时。 Fragment2中的Fragment1按钮可点击,因此片段多次添加。

如何在 fragment2 布局中禁用点击事件?

谢谢,

【问题讨论】:

  • 是否可以使用 add 方法将多个片段添加到单个框架布局中??

标签: android android-fragments


【解决方案1】:

尝试使用ft.replace 而不是ft.add

如果你想使用ft.add,至少要删除旧片段:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.main, new Fragment1(), "frag1");
ft.add(R.id.main, new Fragment2(), "frag2");
ft.commit();

// Later on
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Manually remove fragments
ft.remove(getSupportFragmentManager().findFragmentByTag("frag1"));
ft.remove(getSupportFragmentManager().findFragmentByTag("frag2"));
ft.add(R.id.main, new Fragment1(), "newFrag1");
ft.commit();

【讨论】:

  • 当我重用具有不同 id 的相同片段时(例如 R.id.test、R.id.test1),必须将不同的 id 发送到片段。我不想在片段之间发送 id这就是为什么我选择添加方法..
  • 看看我的编辑。我从未见过有人使用 add 而不使用 remove 方法。
  • 请给出您在 fragment2 布局中禁用点击事件的建议。为什么点击事件会多次工作?我需要在片段管理器中添加任何内容吗?
  • 我可以添加和删除具有相同片段布局的片段。我想添加多个布局而不使用替换方法?
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 2014-01-16
相关资源
最近更新 更多