1

素晴らしいリソースを提供していただきありがとうございます。android SDK apidemo AlertDialogSamples.java の実装について質問があります。基本的に、AlertDialogSamples クラスをアプリに追加し、アクティビティからさまざまなアラート ダイアログ (つまり、、、...) を呼び出したいと考えていDIALOG_YES_NO_MESSAGEますDIALOG_PROGRESS。オンラインのすべての例で、各アクティビティ クラス内に alertdialog コードが含まれていることに驚きました。

私はこのアイデアについていくつかの反復を試みました:

public class My1Activity extends SherlockActivity implements View.OnClickListener {
   ...
   AlertDialogSamples alert = new AlertDialogSamples();
   ...
   private void changeEmailCommand(){
         alert.showAlertDialog(My1Activity.this, DIALOG_TEXT_ENTRY, title);

その後:

public class AlertDialogSamples extends Activity {
   ...
public void showAlertDialog(Context context, int i, String title) {
        showAlertDialog(context, i, title);
  ... (rest is existing code and modifying the .setTitle to accept title message)
    }

アラートダイアログを表示する運がありませんでした(クラッシュするだけです)

インテントでそれを行う方法はありますか?非同期?

4

3 に答える 3

0
public static void showAlerDialog(Context context, String title,
        String msg, AlertDialogDelegate delegate, int code) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
    alertDialog.setTitle(title);
    alertDialog.setMessage(msg);
    alertDialog.setCancelable(false);

    if (title.equalsIgnoreCase(ERROR)) {
        alertDialog.setIcon(context.getResources().getDrawable(
                R.drawable.error_icon));
    } else if (title.equalsIgnoreCase(SUCCESS)) {
        alertDialog.setIcon(context.getResources().getDrawable(
                R.drawable.success));
    } else {
        alertDialog.setIcon(context.getResources().getDrawable(
                R.drawable.warning));
    }

    alertDialog.setPositiveButton("OK", new AlertDialogListenter(delegate,
            code));
    alertDialog.show();

}
于 2012-11-29T12:05:54.823 に答える
0

次のコードを使用して進行状況ダイアログを表示します。

  1. Static メソッドを使用してユーティリティ クラスを作成します。
  2. ダイアログを表示したい場合は、アクティビティから呼び出します。例: Utility.showActionIndicator("Your message", Acitivty.this); および Utility.dismissActionIndicator();

この例を参考にして、運試しをしてみてください。

アラート ダイアログを表示するためのユーティリティ メソッドを追加するようにコードが更新されました - Utility.showAlertDialog(YourActivity.this) を呼び出すだけです

更新: (ヒント - Morfy A Wounded Lion のメソッドをこのクラスに追加します。Morfy A Wounded Lion のコードに感謝します。すばらしい)

public class Utility {

    private static ProgressDialog   actionIndicator = null;
    private static AlertDialog.Builder alertDialogBuilder   = null;

    private Utility() {

    }

    public static void showAlertDialog(Activity activity) {

        if (alertDialogBuilder == null) {
            alertDialogBuilder = new AlertDialog.Builder(activity);
        }
            // set title
            alertDialogBuilder.setTitle("Your Title");

            // set dialog message
            alertDialogBuilder
                .setMessage("Click yes to exit!")
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {

                    }
                  })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {

                        dialog.cancel();
                    }
                });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();

    }

    public static void showActionIndicator(String message,Activity activity) {

        if (actionIndicator == null) {
            actionIndicator = 
            new ProgressDialog(activity);
        }
        actionIndicator.setCancelable(false);
        actionIndicator.setCanceledOnTouchOutside(false);
        actionIndicator.setMessage(message);
        if (!actionIndicator.isShowing()) {
            try {
                actionIndicator.show();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                Log.d("exception","something went wrong",e);
            }
        }
        System.out.println("Dialog is showing");
    }

    public static void changeActionIndicatorMessage(String message) {

        if (actionIndicator != null && actionIndicator.isShowing()) {
            actionIndicator.setMessage(message);
        }
    }

    public static void dismissActionIndicator() {
        if (actionIndicator != null && actionIndicator.isShowing()) {
            try {
                actionIndicator.dismiss();
            } catch (Exception e) {
                e.printStackTrace();
            }
            actionIndicator = null;
            System.out.println("Dialog dismissed");
        }
    }

}
于 2012-11-07T10:56:11.100 に答える
0
public static void showAlerDialog(Context context, String title,
        String msg, AlertDialogDelegate delegate, int code) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
    alertDialog.setTitle(title);
    alertDialog.setMessage(msg);
    alertDialog.setCancelable(false);

    if (title.equalsIgnoreCase(ERROR)) {
        alertDialog.setIcon(context.getResources().getDrawable(
                R.drawable.error_icon));
    } else if (title.equalsIgnoreCase(SUCCESS)) {
        alertDialog.setIcon(context.getResources().getDrawable(
                R.drawable.success));
    } else {
        alertDialog.setIcon(context.getResources().getDrawable(
                R.drawable.warning));
    }

    alertDialog.setPositiveButton("OK", new AlertDialogListenter(delegate,
            code));
    alertDialog.show();

}

次に、次のように AlertDialog を呼び出します

ClassName.showAlerDialog(context,title,msg,delegate,code);

ここでコンテキスト --> コンテキスト

タイトル --> alertdialog タイトル -- 文字列

msg ---> alertdialog msg -- 文字列

デリゲート ---> いくつかの yes -- no イベントで関数を呼び出すインターフェイスのオブジェクト

code -- 整数 -- デリゲートに対するいくつかの異なるアクション

于 2012-11-07T11:01:27.837 に答える