1

同期操作を表すダイアログ ボックスに取り組んでいます。そのため、可変数のレコードがあり、アプリで「同期」ボタンを選択すると、次のように表示されます。

「同期中: レコード x/y」

ここで、x は現在のレコード、y は合計です。レコードが正常に同期されると、これを表すためにダイアログ ボックスが更新されます。

Android API を見ると、AlertDialog を作成する方法があるように見えますが、同期操作を実行するときに AlertDialog インスタンスが動的に更新されるようにコードを記述する方法がわかりません。

4

3 に答える 3

1

ProgressDialog を使用できます。AsyncTask を開始し、onPreExecute() コールバックで ProgressDialog を作成し、onPublishProgress() コールバックで更新し (スレッドの安全性の理由から doInBackground() メソッドから publishProgress() を呼び出す必要があります)、onPostExecute() でそれを閉じます。折り返し電話。

AsyncTask のドキュメントには、必要なことにかなり近いものが含まれています: http://developer.android.com/reference/android/os/AsyncTask.html

于 2013-01-22T21:51:43.733 に答える
0

これは、テキストを中央に配置するために一度見たトリックですAlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
builder.setMessage("Message");
builder.setPositiveButton("OK", null);
AlertDialog dialog = builder.show();

// Must call show() prior to fetching text view
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);

最後の行を

messageView.setText("Whatever you need");

それはうまくいくかもしれません

于 2013-01-22T21:51:22.350 に答える
0

新しいダイアログの新しいアクティビティを作成し、Android マニフェストに追加します。

新しいダイアログを作成し、null の場合はダイアログをキャンセルします。そして、新しいインテント onNewIntent をキャッチして、ダイアログの内容を更新します。ご不明な点がございましたらお知らせください..

public class NewDialog extends Activity {

private AlertDialog alertDialog;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Remove title bar
    requestWindowFeature(Window.FEATURE_NO_TITLE);
}

@Override
protected void onStart() {
    super.onStart();
    showNextDialog();
}

// Cancel the dialog if it is not null (i.e. contains message from previous dialog)
protected Dialog showNextDialog() {
        if (alertDialog != null) {
            alertDialog.cancel();
            alertDialog = null;
        }

// Build dialog with updated info
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(dialogTitle);
        builder.setMessage(dialogMessage);
        alertDialog = builder.create();
        alertDialog.show();
        return alertDialog;
}

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    showNextDialog();
    }

}
于 2013-01-22T22:02:58.293 に答える