是否有Android设计模式可以处理单个活动中的多个片段?

时间:2016-04-26 05:46:21

标签: android android-fragments android-activity design-patterns

我在工作中继承了一些代码,我对一些实现有疑问。我正在处理的应用程序有一个包含大约15个不同片段的Activity。处理这些片段的Activity中的逻辑大致可以使用以下伪代码进行汇总:

if (button_1 selected) { 
    load fragment_1; 
} else if (button_2 selected) {
    load fragment_2;
} else if (button_3 selected) {
    load fragment_3;
} ...and so on x15ish

我的问题是:是否存在某种Android设计模式来处理这样的情况?代码有效;但是,对于一个巨大的if / else或case声明,我感觉不太舒服。我看到了这个question,它看起来与我遇到的问题非常相似。我在互联网上做了很多搜索,但我没有找到这种情况的例子或最佳实践。

如果有人可以指出我正确的方向或有一些建议;那太棒了。谢谢!

2 个答案:

答案 0 :(得分:0)

您不应该检查选择了哪个按钮,而是使用按钮的onClickListener来选择正确的片段。

buttonForFragment1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
             // select fragment 1 here
    }
});

关于这个问题,这不是一个设计模式的层次,而是实现细节(习语),你正确认识到你的代码是一种气味,我认为一个可能的解决方案不符合条件作为模式是上面的代码。

答案 1 :(得分:0)

对于布局中的每个按钮,您可以在活动中指定方法:

<Button 
    ...
    android:onClick="startFragmentOne" />

然后实现这些方法:

public void startFragmentOne(View view) {
    //TODO
}