我目前正在 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");
}
});
它有效,但我正在为计算器上的每个按钮编写相同的代码。正如你可以想象的那样,这是非常多余的。无论如何,我可以以更有效的方式编写这段代码吗?不涉及为每个按钮都编写此方法的方法吗?
您只需按照以下步骤操作即可轻松完成...
你不必写新的onClickListener
对于每个Button
...只需实施View.OnClickLister
给你的Activity
/Fragment
..它将实现名为的新方法onClick()
用于处理 onClick 事件Button
,TextView`等。
- 实施
OnClickListener()
在你的Activity
/Fragment
public class MainActivity extends Activity implements View.OnClickListener {
}
- 在您的 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..
}
}
- 实施
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);
}
- 按 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;
}
}
请参阅此链接了解更多信息:
-
https://medium.com/p/990ebb922901 https://medium.com/p/990ebb922901
-
https://androidacademic.blogspot.com/2016/12/multiple-buttons-onclicklistener-android.html https://androidacademic.blogspot.com/2016/12/multiple-buttons-onclicklistener-android.html(更新)
这将使处理许多按钮单击事件变得更容易,并且管理起来看起来很简单......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)