Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何处理多次做同一件事_Android - Fatal编程技术网

Android 如何处理多次做同一件事

Android 如何处理多次做同一件事,android,Android,我有一个按钮,可以从一些编辑文本中获取文本,并根据从微调器中选择的选项对它们进行一些计算,因此单击中有很多代码,我需要使用它3次 目前,我的代码看起来像这样 if (getIntent().hasExtra("blk")) { btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) {

我有一个按钮,可以从一些编辑文本中获取文本,并根据从微调器中选择的选项对它们进行一些计算,因此单击中有很多代码,我需要使用它3次

目前,我的代码看起来像这样

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;    
    }

   }
这应该能解决你的问题