У меня есть диалог, и у меня много действий ... Мне нужно вызывать один и тот же dailog во всех действиях ... в настоящее время я написал код для каждого действия, но это неправильный путь ... Может ли кто-нибудь помогите мне в этом

0
coderslay 30 Авг 2011 в 13:29

3 ответа

Лучший ответ

Хорошо, ниже мой способ реализации диалога в статическом классе, поэтому я могу вызывать его из любого действия, когда мне нужно

public static void showProgressDialog(Context mContext, String text, boolean cancellable)
{
    removeDialog();
    mDialog = new Dialog(mContext, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
    mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

    LayoutInflater mInflater = LayoutInflater.from(mContext);
    View layout = mInflater.inflate(R.layout.popup_example, null);
    mDialog.setContentView(layout);

    TextView mTextView = (TextView) layout.findViewById(R.id.text);
    if (text.equals(""))
        mTextView.setVisibility(View.GONE);
    else
        mTextView.setText(text);

    mDialog.setOnKeyListener(new DialogInterface.OnKeyListener()
    {
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
        {
            switch (keyCode)
            {
            case KeyEvent.KEYCODE_BACK:
                return true;
            case KeyEvent.KEYCODE_SEARCH:
                return true;
            }
            return false;

        }
    });

    mDialog.setCancelable(cancellable);

    mDialog.show();
}

public static void removeDialog()
{
    if (mDialog != null)
        mDialog.dismiss();
}
0
ingsaurabh 30 Авг 2011 в 09:40

Просто создайте класс и внутри него статический метод (скажем, displayDialog), скопируйте и вставьте в него код, отображающий ваш диалог. Теперь вызовите этот статический метод из любого места вашего проекта. Но вам, возможно, придется передать контекст вызывающей активности статическому методу.

public class dialogClass {

static Dialog dialog=null;
public static void exitApp_Dialog(Context context,String title,String message){

     AlertDialog.Builder alertbox = new AlertDialog.Builder(context);
      alertbox.setTitle("Warning");
     alertbox.setMessage("Exit Application?");
     alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface arg0, int arg1) {
             activity.finish();
         }
     });
     alertbox.setNegativeButton("No", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface arg0, int arg1) {

         } 
     });
     alertbox.show();
}
}
1
Andro Selva 30 Авг 2011 в 09:42

Вам следует перегруппировать код, строящий Dialog во вспомогательном классе.
Ниже приводится отрывок из DialogHelper, который я построил для себя и который я использую для отображения файлов справки своих приложений.

public class DialogHelper {

public static AlertDialog showHelp(final Context ctx, final int resTitle, final int resFilename, final int resOk, final int resViewOnline, final int resOnlineUrl) {
        final WebView webview = new WebView(ctx);
        webview.loadUrl(ctx.getString(resFilename));

        AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
        builder.setTitle(resTitle)
                .setView(webview)
                .setCancelable(false)
                .setPositiveButton(resOk, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.dismiss();
                    }
                })
                .setNegativeButton(resViewOnline, new DialogInterface.OnClickListener()         {
                    public void onClick(DialogInterface dialog, int id) {
                        final Uri uri = Uri.parse(ctx.getString(resOnlineUrl));
                        final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        ctx.startActivity(intent);
                    }
                }
            );

            final AlertDialog dlg = builder.create();
            dlg.show();

            return dlg;
        }
    }

    ... other kinds of dialog take place here ...
}

Так я просто звоню

DialogHelper.showHelp(context, R.string.helpTitle, R.string.localizedFilename, R.string.labelOk, R.string.labelViewOnlineHelp, R.string.onlineHelpUrl); 

Из всех моих приложений. Это много параметров, но это работоспособно.

В этом коде есть неприятная вещь: я использую setNegativeButton() не по назначению. Это то, что мне нужно реорганизовать, но это ничего не меняет в подходе.

О параметрах showHelp(): это final, поскольку они используются в анонимных классах, построенных внутри метода. Это требование компилятора.

0
Shlublu 30 Авг 2011 в 09:50