gpt4 book ai didi

Android:AsyncTask ProgressDialog 不会在 ActivityGroup 中打开

转载 作者:可可西里 更新时间:2023-11-01 18:57:27 25 4
gpt4 key购买 nike

我试图在轮询我的服务器时打开一个进度对话框。该类是一个 ActivityGroup,因为它嵌套在选项卡栏中。要将 View 保持在框架内,需要 ActivityGroup。这是我的 ActivityGroup 类的声明:

   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();
}

当我运行给定的应用程序时,它遇到了与 WindowManager$BadTokenException 相关的错误。声明它无法使用未知 token 启动窗口。我尝试制作一个示例应用程序,它只是一个普通的 Activity(不是 ActivityGroup)并且它工作得很好。

有谁知道如何修改它以使其工作,或者允许进度条嵌套在选项卡栏中的解决方法?非常感谢任何帮助。

最佳答案

如果 ActivityGroup 位于 TabActivity 中,则您的嵌套 Activity 超过两层。 Android 目前不支持此功能,但有一个解决方法。您必须将父 Activity 传递给对话框。

在 Activity 类中为此目的创建一个辅助方法:

private Context getDialogContext() {
Context context;
if (getParent() != null) context = getParent();
else context = this;
return context;
}

然后换行

private final ProgressDialog dialog = new ProgressDialog(CheckInActivity.this);

private final ProgressDialog dialog = new ProgressDialog(getDialogContext());

关于Android:AsyncTask ProgressDialog 不会在 ActivityGroup 中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4329710/

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