Android 如何处理多次做同一件事
我有一个按钮,可以从一些编辑文本中获取文本,并根据从微调器中选择的选项对它们进行一些计算,因此单击中有很多代码,我需要使用它3次 目前,我的代码看起来像这样Android 如何处理多次做同一件事,android,Android,我有一个按钮,可以从一些编辑文本中获取文本,并根据从微调器中选择的选项对它们进行一些计算,因此单击中有很多代码,我需要使用它3次 目前,我的代码看起来像这样 if (getIntent().hasExtra("blk")) { btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) {
if (getIntent().hasExtra("blk")) {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// a lot of code here
}
});
} else if (getIntent().hasExtra("Length")) {
edtNumber1.setText(setLength + "");
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// do the same here
}
});
} else if (getIntent().hasExtra("Height")) {
edtNumber2.setText(setHeight + "");
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// do the same here
}
});
我如何缩短这段代码,我发现自己做了很多,重复了注释中提到的@Luksprog的相同代码,创建了一个可以重用的方法:
private void doALotOfWork() {
// do a lot of work here
}
并在任何需要的地方调用它:
@Override
public void onClick(View v) {
doALotOfWork();
}
正如注释中提到的@Luksprog,创建一个可以重用的方法:
private void doALotOfWork() {
// do a lot of work here
}
并在任何需要的地方调用它:
@Override
public void onClick(View v) {
doALotOfWork();
}
您可以修改活动以实现
OnClickListener
并适当地重写onClick()
然后只需要调用btn.setOnClickListener(this)你只需要调用它一次
如果有许多视图调用活动的onClick方法,则可以打开view.getId()
,修改活动以实现OnClickListener
,并相应地重写onClick()
然后只需要调用btn.setOnClickListener(this)你只需要调用它一次
如果有许多视图调用活动的onClick方法,则可以打开view.getId()
,使ActivityClass实现view.OnClickListener()
现在,对于每个按钮集onClickListener()
as->
btn.setOnClickListener(this)
将onClickListener实现为->
@Override
public void onClick(View v) {
//Do common work here and if you want to do different work then ->
switch(v.getId())
{
case R.id.btn:
//TODO Code
break;
case R.id.something:
break;
}
}
您可以使ActivityClass实现View.OnClickListener()
现在,对于每个按钮集onClickListener()
as->
btn.setOnClickListener(this)
将onClickListener实现为->
@Override
public void onClick(View v) {
//Do common work here and if you want to do different work then ->
switch(v.getId())
{
case R.id.btn:
//TODO Code
break;
case R.id.something:
break;
}
}
如果不想实现接口,请使用方法来实现
setButtonListener(Button btn) {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
whenButtonGetsClicked();
}
});
}
whenButtonGetsClicked(){
//do your magic
}
但是,我建议使用Tanix.7x所述的接口来实现,如果您不想实现接口,请使用方法来实现
setButtonListener(Button btn) {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
whenButtonGetsClicked();
}
});
}
whenButtonGetsClicked(){
//do your magic
}
但是,我建议使用Tanix.7x所述的界面来完成此操作,这是我最直接的方法:
OnClickListener buttonListener=new OnClickListener() {
@Override
public void onClick(View arg0) {
// a lot of code here
}
}
if (getIntent().hasExtra("blk")) {
btn.setOnClickListener(buttonListener);
} else if (getIntent().hasExtra("Length")) {
edtNumber1.setText(setLength + "");
btn.setOnClickListener(buttonListener);
} else if (getIntent().hasExtra("Height")) {
edtNumber2.setText(setHeight + "");
btn.setOnClickListener(buttonListener);
}
尽管情况稍微复杂一些(例如,我想要非常类似的参数化功能),但通常最好使用实现OnClickListener的内部类。对我来说最直接的方法是:
OnClickListener buttonListener=new OnClickListener() {
@Override
public void onClick(View arg0) {
// a lot of code here
}
}
if (getIntent().hasExtra("blk")) {
btn.setOnClickListener(buttonListener);
} else if (getIntent().hasExtra("Length")) {
edtNumber1.setText(setLength + "");
btn.setOnClickListener(buttonListener);
} else if (getIntent().hasExtra("Height")) {
edtNumber2.setText(setHeight + "");
btn.setOnClickListener(buttonListener);
}
尽管情况稍微复杂一些(例如,我想要非常类似的参数化功能),但通常最好使用实现OnClickListener的内部类。要缩短代码,请实现OnClickListener并添加未实现的方法
对于每个按钮,按如下方式设置事件处理程序:
btn.setOnClickListener(this);
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btn:
//TODO Code
break;
case R.id.btn2:
break;
}
}
回到您的onClick()方法中执行以下操作:
btn.setOnClickListener(this);
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btn:
//TODO Code
break;
case R.id.btn2:
break;
}
}
这应该可以解决您的问题。要缩短代码,请在ClickListener上实现并添加未实现的方法
对于每个按钮,按如下方式设置事件处理程序:
btn.setOnClickListener(this);
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btn:
//TODO Code
break;
case R.id.btn2:
break;
}
}
回到您的onClick()方法中执行以下操作:
btn.setOnClickListener(this);
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btn:
//TODO Code
break;
case R.id.btn2:
break;
}
}
这应该能解决你的问题