gpt4 book ai didi

java - Android Progressbar 在错误的时间启动

转载 作者:行者123 更新时间:2023-11-30 11:47:39 25 4
gpt4 key购买 nike

我尝试在我的应用程序中启动一个进度条,但是当我启动它时,BAr 在功能启动之前没有显示

public void onClick(View v) {

if (v == button)
{
ProgressDialog dialog = ProgressDialog.show(App.this, "",
"Loading. Please wait...", true);
dialog.show();
try
{

directory = edittext.getText().toString();
FileWriter fstream = new FileWriter("/data/data/folder.hide.alexander.fuchs/folder.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write(directory);
//Close the output stream
out.close();
if(hide_or_show == "hide")
{



edittext.setVisibility(View.INVISIBLE);
folder_to_hide.setVisibility(View.INVISIBLE);
hide();

dialog.dismiss();
}
else
{


show();
edittext.setVisibility(View.VISIBLE);
folder_to_hide.setVisibility(View.VISIBLE);

dialog.dismiss();
}
}
catch(Exception x)
{
String ErrorMessage = x.getMessage();
Toast.makeText(this,"Error"+ErrorMessage, Toast.LENGTH_LONG).show();
finish();
}
}
if (v == options)
{
final CharSequence[] items = {"Change password", "http://www.alexander-fuchs.net/", "Market"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Options");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {

if (items[item] == "Change password")
{
createpass();

}
if (items[item] == "http://www.alexander-fuchs.net/")
{
intentstarter(items[item].toString());
toaster(items[item].toString());
}
if (items[item] == "Market")
{
intentstarter("market://search?q=pub:Alexander Fuchs");
toaster("Please wait...");
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
}

当我点击按钮时,它需要很长时间才能响应,然后整个功能完成而没有提示进度条

最佳答案

onClick是一个回调,只有在回调结束时才返回Android。您所做的所有 UI 交互基本上都在回调处于 Activity 状态时收集并排队,并在返回后执行(技术上可能不完全准确)。

要让 ProgressBar 在 Action 开始时显示并在 Action 结束时消失,您可以实现一个 AsyncTask,其中进度条显示在 onPreExecute 中,真正的计算在 doInBackground 中完成,进度条在 onPostExecute 中关闭。例如:

 protected void onPreExecute() {
dialog = new ProgressDialog(context);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.show();
}

protected void onPostExecute(Map<Integer, String> integerStringMap) {
if (dialog!=null)
dialog.cancel();
}

protected void onProgressUpdate(Integer... values) {
int val = values[0]*10000/num;
dialog.setProgress(val);
}

See here以获得更完整的示例。

关于java - Android Progressbar 在错误的时间启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9216827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com