Android:AsyncTask ProgressDialog将不会在ActivityGroup中打开
我试图在轮询服务器时打开一个进度对话框。该类是ActivityGroup,因为它嵌套在选项卡栏中。要使视图保持在框架内,需要ActivityGroup。以下是我的ActivityGroup类的声明:Android:AsyncTask ProgressDialog将不会在ActivityGroup中打开,android,android-asynctask,progressdialog,activitygroup,Android,Android Asynctask,Progressdialog,Activitygroup,我试图在轮询服务器时打开一个进度对话框。该类是ActivityGroup,因为它嵌套在选项卡栏中。要使视图保持在框架内,需要ActivityGroup。以下是我的ActivityGroup类的声明: public class CheckInActivity extends ActivityGroup{ ... public void onCreate(Bundle savedInstanceState){ super.onCreate(sav
public class CheckInActivity extends ActivityGroup{
...
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.checkin);
new LocationControl().execute(this);
现在,我的AsyncTask类位于相同的CheckInActivityClass中,如下所示:
private class LocationControl extends AsyncTask<Context, Void, Void>
{
private final ProgressDialog dialog = new ProgressDialog(CheckInActivity.this);
protected void onPreExecute()
{
this.dialog.setMessage("Determining your location...");
this.dialog.show();
}
私有类LocationControl扩展了异步任务
{
private final ProgressDialog dialog=新建ProgressDialog(选中Inactive.this);
受保护的void onPreExecute()
{
this.dialog.setMessage(“确定您的位置…”);
this.dialog.show();
}
当我运行给定的应用程序时,它遇到了一个与WindowManager$BadTokenException相关的错误。声明它无法使用未知的令牌启动窗口。我尝试制作一个示例应用程序,它只是一个常规活动(而非ActivityGroup),并且工作正常
是否有人知道如何修改此项以使其正常工作,或者知道如何在选项卡栏中嵌套进度条的变通方法?非常感谢您的帮助。如果ActivityGroup位于选项卡Activity中,则您有两个以上级别的嵌套活动。Android目前不支持此项,但有变通方法。Y您必须将父活动传递给对话框 在activity类中为此目的创建帮助器方法:
private Context getDialogContext() {
Context context;
if (getParent() != null) context = getParent();
else context = this;
return context;
}
然后换行
private final ProgressDialog dialog = new ProgressDialog(CheckInActivity.this);
到
如果getParent()不适用于您,请尝试仅使用TabsActivity.context
(或替换父选项卡活动类的名称)。我使用的是嵌套活动,因此使用的是getParent()仍然没有为对话框返回正确的上下文,因为它需要扩展TabsActivity的活动的上下文,而不是直接父级
简单修复:
公共静态TabsActivity context;
和context=this
AlertDialog.Builder=新建AlertDialog.Builder(此);
它就像一个符咒。这里很简单,您也可以使用以下命令
private final ProgressDialog dialog = new ProgressDialog(getParent());
这对我来说非常有效
AlertDialog.Builder builder = new AlertDialog.Builder(TabsActivity.context);
private final ProgressDialog dialog = new ProgressDialog(getParent());