gpt4 book ai didi

Android:不显示进度对话框

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

我有一个使用以下代码启动子 Activity 的主要 Activity :

Intent intent = new Intent();
intent.setClassName(MyChildActivity.class.getPackage().getName(), MyChildActivity.class.getName());
((Activity)context).startActivity(intent);

我正尝试在子 Activity 中执行一项耗时的任务,并希望在执行此操作时显示 ProgressDialog。我的代码如下所示:

private ProgressDialog _progressDialog;

private OnClickListener btn_onClick = new OnClickListener() {
public void onClick(View v) {
_progressDialog = ProgressDialog.show(
v.getContext(),
"Please wait",
"Performing task..."
);

TaskThread t = new ExportThread(v.getContext());
t.start();
}
};

private class TaskThread extends Thread{
private Context _context;

public TaskThread(Context context) {
_context = context;
}

private Handler _handler = new Handler() {
@Override
public void handleMessage(Message msg) {
_progressDialog.dismiss();
}
};


@Override
public void run() {
performTask(_context);
_handler.sendEmptyMessage(0);
}
}

由于某种原因,ProgressDialog 没有显示。如果我在主要 Activity 中使用相同的代码,它会起作用 - 但在子 Activity 中不起作用。另外,下面的代码也无法显示ProgressDialog(但Toast确实显示):

private ProgressDialog _progressDialog;

private OnClickListener _btn_onClick = new OnClickListener() {
public void onClick(View v) {
_progressDialog = ProgressDialog.show(
v.getContext(),
"Please wait",
"Performing task..."
);

try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

_progressDialog.dismiss();

Toast.makeText(v.getContext(), "Done with progress dialog.", Toast.LENGTH_SHORT).show();
}
};

有什么想法吗?我们是否不允许显示来自子 Activity 的 ProgressDialog?

谢谢。

最佳答案

为什么使用线程而不是 async task

异步任务实现了onProgressUpdatepublishProgress 方法,这使得显示和更新 UI/进度对话框变得容易。

这是一些示例代码:http://android-projects.de/2010/12/08/threading-in-android-apps-wir-entwickeln-einen-zahler/

关于Android:不显示进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4395411/

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