首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android,代码优化

Android,代码优化
EN

Stack Overflow用户
提问于 2014-04-28 21:39:53
回答 7查看 519关注 0票数 0

我正在开发一个android应用程序,并且我有一个重复的代码。有什么解决方案可以优化这些代码行吗?谢谢

代码语言:javascript
复制
Button btn1 = (Button) dialog.findViewById(R.id.btn1);
Button btn2 = (Button) dialog.findViewById(R.id.btn2);
Button btn3 = (Button) dialog.findViewById(R.id.btn3);
Button btn4 = (Button) dialog.findViewById(R.id.btn4);
Button btn5 = (Button) dialog.findViewById(R.id.btn5);
Button btn6 = (Button) dialog.findViewById(R.id.btn6);
Button btn7 = (Button) dialog.findViewById(R.id.btn7);
Button btn8 = (Button) dialog.findViewById(R.id.btn8);
Button btn9 = (Button) dialog.findViewById(R.id.btn9);

btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);
btn3.setOnClickListener(listener);
btn4.setOnClickListener(listener);
btn5.setOnClickListener(listener);
btn6.setOnClickListener(listener);
btn7.setOnClickListener(listener);
btn8.setOnClickListener(listener);
btn9.setOnClickListener(listener);
EN

回答 7

Stack Overflow用户

发布于 2014-04-28 21:47:08

为布局xml中的每个按钮添加一个android:onClick="onButtonClick"侦听器

代码语言:javascript
复制
<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button1"
    android:layout_margin="10dp"
    android:onClick="onButtonClick"/>

并且,在您的Activity中添加一个公共方法onButtonClick来侦听按钮onClick。什么时候调用onButtonClick取决于按钮id,做你的其他事情

代码语言:javascript
复制
public void onButtonClick(View view) {
    int id = view.getId();
    switch (id){
        case R.id.button1:
            // do your stuff;
            break;
        case R.id.button2:
            // do your stuff
            break;
    }
}
票数 5
EN

Stack Overflow用户

发布于 2014-04-28 21:53:52

您还可以动态创建按钮并将其添加到容器布局中。假设您有一个LinearLayout作为容器。在您的onCreate()方法中,找到视图:

容器容器= ( LinearLayout )findViewById(R.id.container);

然后在一个循环中创建按钮并将它们添加到容器中:

代码语言:javascript
复制
for(int i=0; i<numberOfButtons; i++){
    Button b = new Button(this); //Create the button with the current context
    b.setText("My button "+ String.valueOf(i));
    container.addView(b);
}

如果你想使用另一种布局和布局你想要的视图,你可以使用LayoutParams和其他特殊的参数,如GRAVITY等。

票数 1
EN

Stack Overflow用户

发布于 2014-04-28 21:44:17

我在这里要做的是声明一个按钮数组,而不是许多变量。

代码语言:javascript
复制
Button[] buttons = new Buttons[9];

要从布局中获取它们,我看不到任何其他解决方案(除了动态创建按钮而不是从XML创建按钮):

代码语言:javascript
复制
Button buttons[0] = (Button) dialog.findViewById(R.id.btn1);
Button buttons[1] = (Button) dialog.findViewById(R.id.btn2);
Button buttons[2] = (Button) dialog.findViewById(R.id.btn3);
Button buttons[3] = (Button) dialog.findViewById(R.id.btn4);
Button buttons[4] = (Button) dialog.findViewById(R.id.btn5);
Button buttons[5] = (Button) dialog.findViewById(R.id.btn6);
Button buttons[6] = (Button) dialog.findViewById(R.id.btn7);
Button buttons[7] = (Button) dialog.findViewById(R.id.btn8);
Button buttons[8] = (Button) dialog.findViewById(R.id.btn9);

对于其余部分,请使用您的数组:

代码语言:javascript
复制
for (Button btn : buttons) {
    btn.setOnClickListener(listener);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23342701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档