对于我的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);
有什么方法可以清理它吗?
答案 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和处理程序之间的映射,这在眼睛上相对容易,并且不需要太多按键。