Sel*_*t0r 38 android progressdialog android-context
我正在尝试为Android-App创建一个ProgressDialog(只是一个简单的显示用户正在发生的东西,没有按钮或任何东西),但我无法正确.我一直在浏览论坛和教程以及SDK附带的示例代码,但无济于事.
这就是我得到的:
btnSubmit.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
(...)
ProgressDialog pd = new ProgressDialog(MyApp.this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("Working...");
pd.setIndeterminate(true);
pd.setCancelable(false);
// now fetch the results
(...long time calculations here...)
// remove progress dialog
pd.dismiss();
Run Code Online (Sandbox Code Playgroud)
我也试过添加pd.show();和搞乱参数,new ProgressDialog导致什么都没有(除了所选参数不起作用的错误),这意味着:ProgressDialog永远不会出现.应用程序只是保持运行,就好像我从未添加过对话框一样.
我不知道我是否在正确的地方创建了对话框,我把它移动了一下但是,这也没有帮助.也许我在错误的背景下?上面的代码是内部private ViewGroup _createInputForm()在MyApp.
任何提示都表示赞赏,
Rof*_*ion 42
你必须在长计算开始之前调用pd.show,然后计算必须在一个单独的线程中运行.一旦这个线程完成,你必须调用pd.dismiss()来关闭prgoress对话框.
在这里你可以看到一个例子:
创建并显示progressdialog,并调用一个线程来运行繁重的计算:
@Override
public void onClick(View v) {
pd = ProgressDialog.show(lexs, "Search", "Searching...", true, false);
Search search = new Search( ... );
SearchThread searchThread = new SearchThread(search);
searchThread.start();
}
Run Code Online (Sandbox Code Playgroud)
这里线程:
private class SearchThread extends Thread {
private Search search;
public SearchThread(Search search) {
this.search = search;
}
@Override
public void run() {
search.search();
handler.sendEmptyMessage(0);
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
displaySearchResults(search);
pd.dismiss();
}
};
}
Run Code Online (Sandbox Code Playgroud)
小智 25
我给你一个解决方案,尝试这个...首先在onCreate()方法之前的Activity中定义进度对话框
private ProgressDialog progressDialog;
Run Code Online (Sandbox Code Playgroud)
现在,在onCreate方法中,您可以单击任何按钮,您将更改任何操作的活动.只需在那里设置进度条.
progressDialog = ProgressDialog.show(FoodDriveModule.this, "", "Loading...");
Run Code Online (Sandbox Code Playgroud)
现在使用线程来处理要显示和隐藏的进度条
new Thread()
{
public void run()
{
try
{
sleep(1500);
// do the background process or any work that takes time to see progress dialog
}
catch (Exception e)
{
Log.e("tag",e.getMessage());
}
// dismiss the progress dialog
progressDialog.dismiss();
}
}.start();
Run Code Online (Sandbox Code Playgroud)
就这些!
| 归档时间: |
|
| 查看次数: |
65717 次 |
| 最近记录: |