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

Rei*_*erd 0 android android-fragments

想象一下这种情况:

  • 活动.
  • Activity包含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
    }

}
Run Code Online (Sandbox Code Playgroud)

案例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();
    }

}
Run Code Online (Sandbox Code Playgroud)

我有点困惑.

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

Mar*_*res 5

我认为这是OOP原则的一个问题,特别是"封装",我不认为活动应该包含不关心的代码,因此正确的方式来计算你的例子就是在Fragment中有每个toast消息因为是他们的行为,如果进行修改,您实际上知道要去哪里,不像让活动中的所有内容成为每个功能都失去可维护性和可扩展性的单一点,因为所有代码都将依赖于您的活动.通过没有什么错在具有只需几码活动的方式,其实是好的,保持代码进行活动的,如果它不具有活性寿命周期本身做...

问候!

  • 以这种方式思考:如果您想在另一个Activity中再次使用该片段,该怎么办?如果代码在Activity中,那么它也需要复制到新的Activity中.如果它在片段中,它就可以了. (2认同)