我正在处理一个表示同步操作的对话框。所以我有可变数量的记录,当我在我的应用程序上选择“同步”按钮时,它会显示如下内容:
“同步:记录 x of y”
其中 x 是当前记录,y 是总数。随着记录成功同步,对话框会刷新以表示这一点。
查看 Android API,看起来创建 AlertDialog 是可行的方法,但我不确定如何编写代码,以便 AlertDialog 实例在执行同步操作时动态更新。
我正在处理一个表示同步操作的对话框。所以我有可变数量的记录,当我在我的应用程序上选择“同步”按钮时,它会显示如下内容:
“同步:记录 x of y”
其中 x 是当前记录,y 是总数。随着记录成功同步,对话框会刷新以表示这一点。
查看 Android API,看起来创建 AlertDialog 是可行的方法,但我不确定如何编写代码,以便 AlertDialog 实例在执行同步操作时动态更新。
您可以使用 ProgressDialog。启动 AsyncTask,在 onPreExecute() 回调中创建 ProgressDialog,在 onPublishProgress() 回调中更新它(出于线程安全原因,您必须从 doInBackground() 方法调用 publishProgress()),然后在 onPostExecute() 中将其关闭打回来。
AsyncTask 文档的内容与您需要做的非常接近:http: //developer.android.com/reference/android/os/AsyncTask.html
为新对话框创建一个新 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();
}
}
这是我曾经见过的将文本居中的技巧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");
它可以工作