0

想象一下这种情况:

  • 活动。
  • 活动包含带有 2 个片段的布局。片段 A 和片段 B
  • FragmentA 有一个带有按钮的布局,该按钮应该打印一个 toast "Hello"。
  • FragmentB 有一个带有按钮的布局,该按钮应打印吐司“Bye”。
  • 两个按钮都有一个 onClick 属性集。第一个是“sayHello”,第二个是“SayBye”。

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

案例一:

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 会有点代码清晰。它只会有“连接”两个片段的代码,对吧?

4

2 回答 2

5

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

问候!

于 2013-09-10T18:32:15.620 回答
1

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

活动的代码更少没有问题。

于 2013-09-10T18:28:18.143 回答