- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望有人能帮我弄清楚如何仅使用一个循环遍历字符串数组或任何其他方式的虚拟计时器来更改进度对话框中的设置消息对话框。例如,在加载时它可以说正在加载... -> 建筑... -> 渲染... -> 等等。就像一个 1/2 秒的计时器(这只是为了我玩它,一旦我弄清楚如何更改对话框,我可以使用实时更新来调整它。)我一直在使用 this tutorial对于进度线程减去方向代码。有什么想法吗?
谢谢!
它不是很漂亮,但我能够让它与这个一起工作:
public class BadBaconJoke extends Activity implements OnClickListener {
ProgressDialog dialog;
int increment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressdialog);
Button startbtn = (Button) findViewById(R.id.startbtn);
startbtn.setOnClickListener(this);
}
public void onClick(View view) {
// get the increment value from the text box
EditText et = (EditText) findViewById(R.id.increment);
// convert the text value to a integer
increment = Integer.parseInt(et.getText().toString());
dialog = new ProgressDialog(this);
dialog.setCancelable(true);
dialog.setTitle("Loading...");
dialog.setMessage("Almsot done!");
// set the progress to be horizontal
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// reset the bar to the default value of 0
dialog.setProgress(0);
// get the maximum value
EditText max = (EditText) findViewById(R.id.maximum);
// convert the text value to a integer
final int maximum = Integer.parseInt(max.getText().toString());
// set the maximum value
dialog.setMax(maximum);
// display the progressbar
dialog.show();
// create a thread for updating the progress bar
Thread background = new Thread (new Runnable() {
public void run() {
try {
// enter the code to be run while displaying the progressbar.
//
// This example is just going to increment the progress bar:
// So keep running until the progress value reaches maximum value
while (dialog.getProgress()<= dialog.getMax()) {
// wait 500ms between each update
Thread.sleep(500);
// active the update handler
progressHandler.sendMessage(progressHandler.obtainMessage());
}
} catch (java.lang.InterruptedException e) {
// if something fails do something smart
}
}
});
// start the background thread
background.start();
}
// handler for the background updating
Handler progressHandler = new Handler() {
public void handleMessage(Message msg) {
dialog.incrementProgressBy(increment);
int x;
x = dialog.getProgress();
switch (x) {
case 10: dialog.setMessage("Gathering Data"); break;
case 20: dialog.setMessage("Parsing Results"); break;
case 30: dialog.setMessage("Builindg Data"); break;
case 40: dialog.setMessage("TeraForming"); break;
case 50: dialog.setMessage("Contacting Server"); break;
case 60: dialog.setMessage("Ping Back"); break;
case 70: dialog.setMessage("Processing"); break;
case 80: dialog.setMessage("Communicating with Device"); break;
case 90: dialog.setMessage("Populating"); break;
case 100: dialog.setMessage("Displaying Data:"); break;
default: dialog.setMessage("..."); break;
}
if (x == 100){
new AlertDialog.Builder(BadBaconJoke.this);
dialog.setTitle("Complete");
//.setMessage("Are you sure you want to exit?")
// dialog.setButton(android.R.string.no, null);
//.setMessage("Are you sure you want to exit?")
}
}
};
}
有什么想法可以让它与微调器和流程对话框一起工作吗?当我更改 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);到 dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
它只显示 switch case 的默认值。
最佳答案
您可以使用 onProgressUpdated()
来更改消息,因为此方法在 UI 线程上运行。但是,它不会让您有机会在特定时间段内更改消息。
关于Android:进度对话框在加载时更改 ProgressDialog.setMessage(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454419/
我是开发 Android 应用程序的初学者。我不知道为什么我的 alertDialog 框始终显示 null 值。该代码用于通过检查我的数据库上的数据来登录。将不胜感激任何帮助。 我已将 MySql
dialogBuilder.setMessage 什么也没显示!就好像它正在显示一个 null 字符串。但是,newUserPassword 会通过用户通过 EditText newPasswor
这是一个奇怪的案例,最近才引起我的注意。我有一个 Activity 在创建时显示 AlertDialog 以警告用户要完成他们需要重新启动的过程。在我的设备 (Galaxy Nexus) 上,它显示得
我正在尝试将一些文本设置到 DialogFragment 中,并且该文本包含一些新行。 这些我都试过了: setMessage("这是A行\n这是b行"); setMessage("这是A行\\\n这
我有这个代码 public void serviceUnavailable() { runOnUiThread(new Runnable() { @Override
我希望有人能帮我弄清楚如何仅使用一个循环遍历字符串数组或任何其他方式的虚拟计时器来更改进度对话框中的设置消息对话框。例如,在加载时它可以说正在加载... -> 建筑... -> 渲染... -> 等等
嗨,我的应用程序中有 AsyncTask,但我无法更改其 setMessage 例如:- private class ProgressTask1 extends AsyncTask { pri
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string
我在 onCreateDialog() 方法中创建 ProgressDialog 时遇到问题。代码如下: Dialog dialog; switch(id){ case CONNECTING:
我正在创建一个对话框,但我不知道如何编辑消息。 Dialog d2 = new Dialog(this); d2.setTitle("title ok"); d2.setMessage("error
下面是我的代码,我试图通过 onProgressUpdate 方法在 Asyntask 中显示我的进度,但它没有显示在警报对话框中。仅显示初始消息。 class DownloadFileFromUR
我需要在警报对话框中显示多行文本。如果我使用多个 setMessage() 方法,则只显示最后一个 setMessage,如下所示。 final AlertDialog alertDialog = n
我正在尝试为 AlertDialog.Builder 的消息部分设置字体。以下代码仅适用于标题和按钮。我不知道为什么消息字体不一样? Java 代码: AlertDialog.Builder adb
如何通过 setMessage 使用类型安全的 url? 我要改变 ... setMessage [shamlet|Warning! See Help.|] ... 包含链接的消息。 据我目前收
为什么我在这个句子中会出现编译错误? this.message.setMessage(R.string.game_over); 错误信息: The method setMessage(String)
使用 AlertDialog 时如何将部分文本设置为粗体的setMessage() ?添加 和 给我的String不工作。 最佳答案 您也需要使用 Html.fromHtml()。例如: AlertD
在alertController中,如果输入字段为空,我想调用prompt.setMessage()。但这在ionic4中不是有效的函数 代码 const prompt= await this.al
我正在为 Honeycomb 重写一个现有的应用程序,但我遇到了一个问题。在现有的应用程序中,我们创建了一个具有默认标题和消息值的 AlertDialog,然后在需要时替换它们。为了替换它们,我们使用
我无法理解为什么 Java 不允许在异常类型(或其父类(super class) Throwable)创建后更改异常消息。它允许使用 setStackTrace 更改 stackTrace 而不是消息
我有一个 asynktask,它显示一个 progressDialog 并在 doInBackground 方法中更新它的值。方法代码: @Override protected void onPreE
我是一名优秀的程序员,十分优秀!