我正在开发一个Android应用程序。我对使用static
用于dialog
,progress bar
或alert
等自定义UI组件的两种方式感到困惑。
见下文。
public class UiUtils {
public static void inputAlertDialogShow(Context context, final View view ,String message,DialogInterface.OnClickListener listener)
{
CustomDialog.Builder customBuilder = new
CustomDialog.Builder(context);
if(listener!=null) {
customBuilder.setMessage(message).setPositiveButton(context.getResources().getString(R.string.dialog_confirm), listener);
}else{
customBuilder.setMessage(message).setPositiveButton(context.getResources().getString(R.string.dialog_confirm),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (view != null) view.requestFocus();
}
});
}
customBuilder.create().show();
}
}
我将方法显示为static
方法。所以我可以调用自定义对话框到
UiUtils.inputAlertDialogShow(context, view, message, listener).
但我也可以像这样使用它
UiUtils ui = new UiUtils();
ui.inputAlertDialogShow(context, view, message, listener);
任何人都可以解释一下哪个更好,为什么?
答案 0 :(得分:1)
实用程序不需要实例化。实用程序类的目的是提供常用函数,这就是为什么Utility类中的所有函数都是静态的,并且它们被称为Utility.functionName
,因此最好调用UiUtils.inputAlertDialogShow(context, view, message, listener).
希望这有帮助。
答案 1 :(得分:1)
UiUtils.inputAlertDialogShow(context, view, message, listener).
直接像上面一样打电话,还有一件事要跟你一起回电 从任何活动或片段调用此函数时。
希望它会对你有所帮助!
答案 2 :(得分:0)
答案 3 :(得分:0)
你需要考虑一件事,你在编写可测试的代码吗?如果你希望你的代码库是可测试的,那么静态方法就没有了,因为为了测试类的静态方法你需要使用PowerMock,基本的Mockito库不能模拟静态方法。所以为了使代码库可测试,你需要不使用静态方法并使用依赖注入将UiUtils类注入任何依赖于UiUtils的类
所以如果你想从理论上知道哪一个更好?那么不使用静态方法会更好,因为它会产生可测试的代码。
答案 4 :(得分:0)