在几乎所有脚本中使用相同的自定义方法
问题描述:
我正在处理一个项目,并且我注意到我需要在几乎所有脚本中复制和粘贴相同的自定义方法。我在做什么错了?我一遍又一遍地复制它。任何帮助深表感谢。在几乎所有脚本中使用相同的自定义方法
样品:
public class EventHome extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
/********************************************************************
* SHORTENED TOAST *
*********************************************************************/
public void showToast(String value){
Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show();
}
/********************************************************************
* SHORTENED ALERTDIALOG *
*********************************************************************/
public void showAlert(String title, String btn_txt, String message){
final AlertDialog.Builder alert = new AlertDialog.Builder(EventHome.this);
alert.setTitle(title).setMessage(message)
.setNeutralButton(btn_txt, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
alert.setCancelable(true);
}}).show();
}
}
答
创建一个帮助程序类(可以说帮助程序)并将该类文件中的所有重复方法移动到访问修改器中,如public static
。这样做将允许您将方法与类名称一起作为前缀进行调用。请看下图:
Helper.showToast(this, "hello world!");
答
这是相当出上下文代码,所以很难给你一个明确的答案,但一般:当你想显示干杯
public class Helper{
/********************************************************************
* SHORTENED TOAST *
*********************************************************************/
public static void showToast(Context context, String value){
Toast.makeText(context, value, Toast.LENGTH_SHORT).show();
}
}
现在叫你们的活动如下校长保持不变:不要重复代码。您应该旨在消除代码中的所有形式的重复,特别是在处理硬编码值时。这样做的常用方法是在其他类中提供静态函数,或者创建一个包含所有需要重复使用的核心功能的超类。下面是如何使用inheritance
和abstract classes
减少码重复一个简单的例子:
即
abstract class CoreMethods extends Activity implements OnClickListener
{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
/********************************************************************
* SHORTENED TOAST *
*********************************************************************/
public void showToast(String value){
Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show();
}
/********************************************************************
* SHORTENED ALERTDIALOG *
*********************************************************************/
public void showAlert(String title, String btn_txt, String message){
final AlertDialog.Builder alert = new AlertDialog.Builder(EventHome.this);
alert.setTitle(title).setMessage(message)
.setNeutralButton(btn_txt, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
alert.setCancelable(true);
}}).show();
}
}
保存在一个名为CoreMethods.java或类似文件。然后,只要你需要这些方法,你可以简单地继承CoreMethods类并访问函数。
public class ExampleClass extends CoreMethods
{
private void foo() {
super.showToast("bar");
super.showAlert("foobar");
}
}
有关Java继承的更多信息,请参阅here
我想过这个,谢谢! – Xarialon 2012-04-11 09:18:31