减少显示Dialogs Android的代码重复?

时间:2015-07-02 12:01:13

标签: android

该应用需要在应用中的各个位置显示相同的对话框。

我们如何创建一个有助于创建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");

这在我的应用中的许多活动和片段中完成。我该如何防止这种情况?

4 个答案:

答案 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)

  1. 在DialogFragments中创建一个静态newInstance(params)方法
  2. 即时发布论坛捆绑
  3. 执行ListFragmentDialog.newInstance(params).show();需要的地方