重构Android Pin屏幕代码

时间:2014-06-29 22:48:41

标签: java android refactoring

对于我的Android应用,我正在编写针脚屏幕片段。它有一个数字键盘,我需要为它们添加一个事件处理程序。以下代码有效,但看起来并不好看。我已经考虑过创建一个按钮数组并循环遍历它们,但是在Java中有更简单的方法吗?即使将它们放入数组中也需要我做Button[] buttons = [button1, button2, button3, ... ]

之类的操作
button1 = (Button) rootView.findViewById(R.id.button1);
button1.setOnClickListener(pinButtonHandler);

button2 = (Button) rootView.findViewById(R.id.button2);
button2.setOnClickListener(pinButtonHandler);

button3 = (Button) rootView.findViewById(R.id.button3);
button3.setOnClickListener(pinButtonHandler);

button4 = (Button) rootView.findViewById(R.id.button4);
button4.setOnClickListener(pinButtonHandler);

button5 = (Button) rootView.findViewById(R.id.button5);
button5.setOnClickListener(pinButtonHandler);

button6 = (Button) rootView.findViewById(R.id.button6);
button6.setOnClickListener(pinButtonHandler);

button7 = (Button) rootView.findViewById(R.id.button7);
button7.setOnClickListener(pinButtonHandler);

button8 = (Button) rootView.findViewById(R.id.button8);
button8.setOnClickListener(pinButtonHandler);

button9 = (Button) rootView.findViewById(R.id.button9);
button9.setOnClickListener(pinButtonHandler);

button0 = (Button) rootView.findViewById(R.id.button0);
button0.setOnClickListener(pinButtonHandler);

有什么方法可以清理它吗?

1 个答案:

答案 0 :(得分:0)

您可以将重复的两行提取为如下方法:

void registerClickHandler(String buttonId, IHandler handler) {
    Button button = (Button) rootView.findViewById(id);
    button.setOnClickListener(handler);
}

假设你的Handler接口/超类被称为IHandler而你的id是字符串。然后注册码看起来像这样:

registerClickHandler(R.id.button1, pinButtonHandler);
registerClickHandler(R.id.button2, pinButtonHandler);
// ...

这不是很花哨,但你必须在某处指定按钮ID和处理程序之间的映射,这在眼睛上相对容易,并且不需要太多按键。