2

結果としてブール値を使用して独自の確認ダイアログクラスを作成しようとしています。チュートリアルや提案を読んだことがありますが、結果は思ったとおりではありません。

問題は、長いコーディングを書くのが嫌いで、簡単なコーディングを書きたかったことです。確認ダイアログを書く際のAndroidとのこの比較デルフィ

デルファイ:

if MessageDlg ('Message Text', mtConfirmation, [mbYes, mbNo], 0)

アンドロイド:

boolean answer = false;

public boolean Confirm (Activity act, String Title, String ConfirmText,
CancelBtn String, String OkBtn) {
  AlertDialog dialog = new AlertDialog.Builder (act). Create ();
  dialog.setTitle (Title);
  dialog.setMessage (ConfirmText);
  dialog.setCancelable (false);
  dialog.setButton (DialogInterface.BUTTON_POSITIVE, OkBtn,
  new DialogInterface.OnClickListener () {
    public void onClick (DialogInterface dialog, int buttonId) {
  answer = true;
  }
});
dialog.setButton (DialogInterface.BUTTON_NEGATIVE, CancelBtn,
new DialogInterface.OnClickListener () {
  public void onClick (DialogInterface dialog, int buttonId) {
    answer = false;
  }
});
dialog.setIcon (android.R.drawable.ic_dialog_alert);
return answer;
}

問題は、Delphiの場合と同様に、確認ダイアログを生成してブール値trueまたはfalseを生成するクラスを作成できるかどうかです。

クラスをクラスまたは別のアクティビティで使用できるようにするための確認ダイアログ

4

4 に答える 4

3

Androidは必ずしも従来型ではありません。ダイアログを表示して表示されるのを待ってから、何かを行うことはできません。

ダイアログを表示し、コールバックの[はい]/[いいえ]ボタンに応答する必要があります。

このようなものは1つの解決策です:

/**
 * Display a confirm dialog. 
 * @param activity
 * @param title
 * @param message
 * @param positiveLabel
 * @param negativeLabel
 * @param onPositiveClick runnable to call (in UI thread) if positive button pressed. Can be null
 * @param onNegativeClick runnable to call (in UI thread) if negative button pressed. Can be null
 */
public static final void confirm(
        final Activity activity, 
        final int title, 
        final int message,
        final int positiveLabel, 
        final int negativeLabel,
        final Runnable onPositiveClick,
        final Runnable onNegativeClick) {

            AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
            dialog.setTitle(title);
            dialog.setMessage(message);
            dialog.setCancelable (false);
            dialog.setPositiveButton(positiveLabel,
                    new DialogInterface.OnClickListener () {
                public void onClick (DialogInterface dialog, int buttonId) {
                    if (onPositiveClick != null) onPositiveClick.run();
                }
            });
            dialog.setNegativeButton(negativeLabel,
                    new DialogInterface.OnClickListener () {
                public void onClick (DialogInterface dialog, int buttonId) {
                    if (onNegativeClick != null) onNegativeClick.run();
                }
            });
            dialog.setIcon (android.R.drawable.ic_dialog_alert);
            dialog.show();

        }

}

上記の方法を使用するには、次のようなものを使用できます。

        Alert.confirm(activity, R.string.titFileExport, R.string.lblFileConfirmOverwrite, 
                R.string.yes, R.string.no, 
                new Runnable() { public void run() {performExport(activity, app, currentSong, saveFile);}}, 
                null);
        return;
于 2012-11-21T16:52:48.203 に答える
2

ダイアログにカスタムレイアウトを使用できます。または、より高度なニーズの場合は、ダイアログをテーマにしたアクティビティを作成して、で呼び出す方がはるかに簡単な場合がありますstartActivityForResults()。これをアクティビティマニフェストエントリに追加して、「ダイアログ」UIを設計し、アクティビティにテーマを設定するだけです。

android:theme="@android:style/Theme.Dialog"
于 2012-11-18T17:22:20.800 に答える
0

わかった。したがって、値を渡すだけで、ダイアログボックスが必要になるたびに呼び出される単一のメソッドまたはクラスが必要です。SMSを受信して​​ダイアログボックスに表示するプログラムを作成しました。意図として値を渡し、好きなことをするだけです。必要に応じて変更できるシンプルなプログラムです。 http://zohaibbrohi.blogspot.com/2012/11/recieve-sms-and-show-it-in-activity-as.html

于 2012-11-18T18:53:38.617 に答える
0

cordovaを使用してみてください。最新の安定バージョンは2.1.0です。navigator.notification(この場合はアラートまたは確認)APIがあります。

http://docs.phonegap.com/en/2.1.0/guide_getting-started_index.md.html#Getting%20Started%20Guides

http://docs.phonegap.com/en/2.1.0/cordova_notification_notification.md.html#Notification 唯一の欠点は、ブラックベリーを使用すると、ネイティブアプリのエラーが発生しやすくなることです。

于 2012-11-19T12:51:06.357 に答える