小编Fra*_*coC的帖子

Android Fragments基本原理:为什么?这在概念上是错的吗?

我对Android中的"正确编程"有疑问.

我目前正在使用片段开发应用程序.它涉及动态添加的片段到Activity,从XML膨胀的片段,从XML嵌套的片段或动态添加.让我们说一点,一切.

这个问题关注的概念是与片段有关的沟通过程.所以,我已经阅读了文档,这不是我第一次尝试使用片段.

常识(和文档)告诉我们,如果Fragment想要说话或与其活动进行交流,我们应该使用一个界面.

例:

TestFragment

public class TestFragment extends Fragment {

  private TestFragmentInterface listener; 

  public interface TestFragmentInterface {

      void actionMethod();

  }


  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {

      if (getActivity() instanceof TestFragmentInterface) {
          listener = (TestFragmentInterface) getActivity();
      }

      // sending the event
      if (listener != null) listener.actionMethod();
  }

}
Run Code Online (Sandbox Code Playgroud)

测试活动

public class Test implements TestFragmentInterface {

  @Override
  public void actionMethod() {
    ..
  }
}
Run Code Online (Sandbox Code Playgroud)

这里一切都很好.

这提高了可重用性,因为我的TestFragment可以与任何类型的Activity交互,因为Activity实现了我声明的接口.

反过来说,Activity可以通过保持引用并调用其公共方法来与片段交互.这也是使用Activity作为桥接器进行片段到片段通信的建议方法.

这很酷,但有时感觉就像使用接口这只是有点"太多".

问题A.

在这个场景中,我附加的片段具有非常集中的角色,这意味着它们是针对该特定活动完成的,否则不会被使用,忽略接口实现在概念上是错误的,只是做了类似的事情.

((TestActivity) getActivity().myCustomMethod();
Run Code Online (Sandbox Code Playgroud)

这也适用于这样的场景(不是我的情况,只是把它当作"最坏的")我的活动必须处理各种各样的这些不同的片段,这意味着它应该为它应该处理的每个片段实现一个方法.这使代码陷入了一堆"可能不需要的线".

继续前进:仍然使用"聚焦"片段,旨在仅在某种方式下工作,使用嵌套片段是什么?

添加它们就像

public class …
Run Code Online (Sandbox Code Playgroud)

android communication interface fragment

13
推荐指数
2
解决办法
722
查看次数

标签 统计

android ×1

communication ×1

fragment ×1

interface ×1