我在工作中继承了一些代码,我对一些实现有疑问。我正在处理的应用程序有一个包含大约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,它看起来与我遇到的问题非常相似。我在互联网上做了很多搜索,但我没有找到这种情况的例子或最佳实践。
如果有人可以指出我正确的方向或有一些建议;那太棒了。谢谢!
答案 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
}