多个按钮的OnClickListener()android

use*_*685 69 android onclicklistener

我目前正在Android上制作一个简单的计算器应用程序.我试图设置代码,以便当按下数字按钮时,它会用该数字更新计算器屏幕.目前我这样做.

    Button one = (Button) findViewById(R.id.oneButton);
    one.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            TextView output = (TextView) findViewById(R.id.output);
            output.append("1");
        }
    });
Run Code Online (Sandbox Code Playgroud)

它可以工作,但我正在为计算器上的每个按钮编写相同的代码.你可以想象它是多余的.无论如何我能以更有效的方式编写这段代码吗?一个涉及不为每个按钮编写此方法的人?

Pra*_* シ 215

您只需按照以下步骤轻松实现......

你不必onClickListener为Every 编写新的Button...只需实现View.OnClickLister你的Activity/ Fragment..它将实现onClick()为处理onClick事件而调用的新方法Button,TextView`等.

  1. OnClickListener()在你的Activity/ 实施Fragment
public class MainActivity extends Activity implements View.OnClickListener {

}
Run Code Online (Sandbox Code Playgroud)
  1. 在Activity/Fragment中实现onClick()方法
public class MainActivity extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onClick(View v) {
      // default method for handling onClick Events..
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 实现OnClickListener()按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.your_layout);

    Button one = (Button) findViewById(R.id.oneButton);
    one.setOnClickListener(this); // calling onClick() method
    Button two = (Button) findViewById(R.id.twoButton);
    two.setOnClickListener(this);
    Button three = (Button) findViewById(R.id.threeButton);
    three.setOnClickListener(this);

}
Run Code Online (Sandbox Code Playgroud)
  1. 按ID查找按钮并实施您的代码..
@Override
public void onClick(View v) {

    switch (v.getId()) {

        case R.id.oneButton:
            // do your code
            break;

        case R.id.twoButton:
            // do your code
            break;

        case R.id.threeButton:
            // do your code
            break;

        default:
            break;
    }

}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此链接:

https://androidacademic.blogspot.in/2016/12/multiple-buttons-onclicklistener-android.html

这样可以更轻松地处理许多按钮点击事件,并使管理它看起来很简单......


And*_*dro 49

你可以设置属性:

android:onClick="buttonClicked"
Run Code Online (Sandbox Code Playgroud)

在每个按钮的xml文件中,并在java代码中使用它:

public void buttonClicked(View view) {

    if (view.getId() == R.id.button1) {
        // button1 action
    } else if (view.getId() == R.id.button2) {
        //button2 action
    } else if (view.getId() == R.id.button3) {
        //button3 action
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 更好地使用开关 (2认同)

Vad*_*kiy 8

我创建了实现View.OnClickListener的专用类.

public class ButtonClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,我在MainActivity中创建了这个类的实例

private ButtonClickListener onClickBtnListener = new ButtonClickListener();
Run Code Online (Sandbox Code Playgroud)

然后设置onClickListener为按钮

btn.setOnClickListener(onClickBtnListener);
Run Code Online (Sandbox Code Playgroud)


Hen*_*sen 7

在每个按钮上设置一个标签,以便您可以使用它,在这种情况下可能是整数.然后,您只需要一个OnClickListener用于所有按钮:

Button one = (Button) findViewById(R.id.oneButton);
Button two = (Button) findViewById(R.id.twoButton);
one.setTag(new Integer(1));
two.setTag(new Integer(2));

OnClickListener onClickListener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        TextView output = (TextView) findViewById(R.id.output);
        output.append(v.getTag());
    }
}

one.setOnClickListener(onClickListener);
two.setOnClickListener(onClickListener);
Run Code Online (Sandbox Code Playgroud)