2
\$\begingroup\$

I have created a Utils class, which consists of progressDialog and AlertDialog:

public class Utils {


    public static ProgressDialog dialog;
    private static AlertDialog.Builder builder;
    private static AlertDialog alert;

    public static void showLoader(Activity activity) {
        if (dialog == null) {
            dialog = new ProgressDialog(activity);
            dialog.setMessage(activity.getResources().getString(R.string.loading));
            dialog.setCanceledOnTouchOutside(false);
            dialog.setCancelable(false);

        }
        dialog.show();
    }


    public static void hideLoader() {
        if (dialog != null && dialog.isShowing()) {
            dialog.dismiss();
            dialog = null;
        }
    }

    public static void showOKMessageandBack(String message, final Context activity, final Class activityClass) {
        builder = new AlertDialog.Builder(activity);
        if (message.length() <= 0)
            builder.setMessage(message);
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                alert.hide();
                hideLoader();
                Intent intent = new Intent(activity, activityClass);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                activity.startActivity(intent);
            }
        });
        alert = builder.create();
        alert.show();
    }


    public static void showAlertDialog(final Context context , String title , String message  ){

        final AlertDialog alertDialog = new AlertDialog.Builder(context).create();

        // setting Dialog title
        alertDialog.setTitle(title);

        // setting Dialog message
        alertDialog.setMessage(message);

        alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                alertDialog.dismiss();
            }
        });

        alertDialog.show();

    }
}
\$\endgroup\$
  • \$\begingroup\$ You cannot ask us to add code to your class, though we can review it :) I edited that part out of your question and corrected some of the spelling mistakes it had. \$\endgroup\$ – IEatBagels Oct 29 '15 at 15:25
  • \$\begingroup\$ thank you for advice , I edit my question , I need review this class , is their any way to make looks code better \$\endgroup\$ – Mina Fawzy Oct 29 '15 at 15:28
7
\$\begingroup\$

I'm looking at this class and I'm confused.
The reason why is that I'm doing web programming so a dialog can be asked on different sessions.
In that case this class is useless.

In stead of holding your ProgressDialog and AlertDialog in your class as static variable, just return them in the method.
Then your

public static void hideLoader()

should be changed to :

public static void hideLoader(ProgressDialog dialog)

So with a small refactoring you create a class what could be good for multiple users application.
Other advantage is you can call the method multiple times, where in your setup this was impossible and even dangereous.

Naming your class :

A class Utils is just so poor chosen.
If you see a class name like that, what do you expect what's in it?
It could be Utils for Strings like StringUtils or more like MathUtils?
As you see at this name, you already know what to expect from it.
A better name could be DialogUtil

Constants :

In android there is a class R.string who have a lot of constants.
In stead of doing this :

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

You could do :

builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

It's cleaner code who saves a little amount of memory because you don't need to recreate the String every time you call the method.

\$\endgroup\$
4
\$\begingroup\$

Static variables

The variables builder and alert should not be static, as they are only used in one function and do not persist.

The one place you use alert past the end of the function is in the callback function. But you shouldn't be using it there:

           alert.hide();

should be:

            dialog.hide();
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.