该应用需要在应用中的各个位置显示相同的对话框。
我们如何创建一个有助于创建DRY代码的函数。
打开Dialog
:
LocationDialogFragment lf = new LocationDialogFragment();
Bundle bundle = new Bundle();
bundle.putString(Constants.CURRENT_NAME, name);
bundle.putLong(Constants.CURRENT_ID, id);
lf.setArguments(bundle);
lf.show(getFragmentManager(), "TAG");
这在我的应用中的许多活动和片段中完成。我该如何防止这种情况?
答案 0 :(得分:1)
最简单的解决方案是使用静态方法创建一个DialogHelper类,您可以从任何地方调用它。
传递与上下文相关的参数,如fragmentManager,如下所示:
public class DialogHelper{
public static LocationDialogFragment createAndShowLocationDialogFragment(long id, String name, FragmentManager fragmentManager, Bundle bundle){
LocationDialogFragment lf = new LocationDialogFragment();
Bundle bundle = new Bundle();
bundle.putString(Constants.CURRENT_NAME, name);
bundle.putLong(Constants.CURRENT_ID, id);
lf.setArguments(bundle);
lf.show(fragmentManager, "TAG");
return lf;
}
}
通过这种方式,您可以在有权访问FragmentManager
的任何地方拨打电话:
LocationDialogFragment currentDialog = DialogHelper.createAndShowLocationDialogFragment(5, "DialogName", getFragmentManager(), bundle);
如果您不想立即显示对话框,只需创建它,您可以从静态方法中删除show
方法,这样您就不需要传递{{1}参数。
答案 1 :(得分:0)
扩展一个Dialog,覆盖并设置show方法中的所有内容,例如
答案 2 :(得分:0)
创建一个Helper类,您可以在其中放置静态方法,并执行以下操作:
jQuery("#hello").animate({ left: '150px' }, 'slow');
答案 3 :(得分:0)