代码应该放在哪里;在Fragment或Activity中?

时间:2013-09-10 18:24:49

标签: android android-fragments

想象一下这种情况:

  • 活性的影响。
  • 活动包含带有2个片段的布局。 FragmentA和FragmentB
  • FragmentA的布局带有一个按钮,可以打印一个toast“Hello”。
  • FragmentB有一个带有按钮的布局,应该打印一个toast“Toe”。
  • 两个按钮都有一个onClick属性集。第一个是“sayHello”,第二个是“SayBye”。

那么最终展示吐司的正确方法是什么?

案例A:

public class ActivityCustom extends FragmentActivity{
    [...]
    public void sayHello(View v){
        //SHOW TOAST HERE
    }
    public void sayBye(View v){
        //SHOW TOAST HERE
    }

}

案例B:

public class ActivityCustom extends FragmentActivity{
    [...]
    public void sayHello(View v){
        ((FragmentA)this.findFragmentById(R.id.fragmentA)).showToast();
    }
    public void sayBye(View v){
        ((FragmentB)this.findFragmentById(R.id.fragmentB)).showToast();
    }

}

我对此感到有点困惑。

因为如果我们委托片段上的所有工作,我想Activity会有点清楚代码。它只有代码来“连接”两个片段,对吗?

2 个答案:

答案 0 :(得分:5)

我认为这是OOP原则的一个问题,特别是“封装”,我不认为活动应该包含不关心的代码,因此正确的方式来计算你的例子将在片段中有每个toast消息因为是他们的行为,并且在修改的情况下你实际上知道要去哪里,不像让活动中的所有内容成为每个功能都失去可维护性和可扩展性的单点,因为所有代码都将依赖于你的活动。顺便说一句,只用几个代码进行活动没有什么不妥,如果它与活动生命周期本身没有关系,那么将代码放在活动之外真的很好......

问候!

答案 1 :(得分:1)

我相信你应该在每个片段中展示祝酒词。在FragmentA的onCreateView方法中,您可以获得按钮,添加侦听器并在onCLick()方法中显示toast。在FragmentB上也是如此。

活动没有问题可以减少代码。