【问题标题】:Find and set onClickListener on Buttons using a for loop [Android]使用 for 循环查找并设置按钮上的 onClickListener [Android]
【发布时间】:2016-09-07 18:49:07
【问题描述】:

我在布局文件中创建了 10 个按钮,现在我想“找到”它们并将它们存储在一个数组中。现在我还想在每个按钮上放置一个不同的 OnClickListener,以便我按下的每个 Button 都可以执行其他操作。 (在我的例子中,我希望他们提交一个 0-9 的值,所以第一个按钮提交 0,第二个提交 1,等等)。这是我到目前为止的代码:

package de.lucbe.tilt;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity{

Button[] buttons = new Button[10];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    for(int i = 0;i < buttons.length; i++ ){
        String buttonID = "button" + i;
        int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
        buttons[i] = ((Button) findViewById(resID));
    }
}

}

提前谢谢你。

【问题讨论】:

    标签: java android onclicklistener android-button


    【解决方案1】:
        for(int i = 0;i<buttons.length;i++){
            Button = buttons[i];
            Button.setId(i);
            Button.setOnClickListener(this);
        }
    

    在点击按钮时,将把数字作为 id 扔在那里 :)

    【讨论】:

      【解决方案2】:

      为了简单起见,您可以在 MainActivity 类中实现OnClickListener

          public class MainActivity extends AppCompatActivity implements View.OnClickListener
          {
      
       @Override
           protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              f1 =(Button) findViewById(R.id.f1);
              f1.setOnClickListener(this);
      
              f2 =(Button) findViewById(R.id.f2);
              f2.setOnClickListener(this);
           }
      }
      

      然后你必须覆盖 onClick 方法并打开view.getId()

      @Override
      public void onClick(View v) {
          switch (v.getId()) {
          case R.id.f1:
              // your code here
              break;
          case R.id.f2:
              // your code here 
              break;
          }
      }
      

      【讨论】:

        【解决方案3】:

        不需要额外的循环。 在您的循环本身中,初始化它们后,只需输入一行: 按钮[i].setOnClickListener(this);

        实现 OnClickListener ineferfave,然后在覆盖的 onClick 方法中为各种 id 放置一个 switch case

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-27
          • 2013-09-23
          • 2014-05-18
          • 1970-01-01
          • 2022-01-18
          • 1970-01-01
          • 1970-01-01
          • 2013-07-27
          相关资源
          最近更新 更多