1

我正在处理一个表示同步操作的对话框。所以我有可变数量的记录,当我在我的应用程序上选择“同步”按钮时,它会显示如下内容:

“同步:记录 x of 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

为新对话框创建一个新 Activity,添加 Android 清单。

新建一个对话框,如果为空,则取消该对话框。并在NewIntent 上捕获新的Intent 以更新对话框的内容。如果您有任何问题,请告诉我。

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 回答
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 回答