mbs*_*eid 14 android progressdialog activitygroup android-asynctask
我正在尝试在轮询我的服务器时打开一个进度对话框.该类是一个ActivityGroup,因为它嵌套在选项卡栏中.要在框架内保持视图,需要ActivityGroup.这是我的ActivityGroup类的声明:
public class CheckInActivity extends ActivityGroup{
...
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.checkin);
new LocationControl().execute(this);
Run Code Online (Sandbox Code Playgroud)
现在我的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();
}
Run Code Online (Sandbox Code Playgroud)
当我运行给定的应用程序时,它通过与WindowManager $ BadTokenException相关的错误.说明它无法使用未知令牌启动窗口.我尝试制作一个只是常规Activity(而不是ActivityGroup)的示例应用程序,它运行得很好.
有没有人知道如何修改它以使其工作,或解决方法将允许进度条嵌套在选项卡栏中?任何帮助是极大的赞赏.
Tom*_*Tom 22
如果ActivityGroup在TabActivity中,则嵌套活动具有多于两个级别.Android目前不支持此功能,但有一种解决方法.您必须将父活动传递给对话框.
在activity类中为此创建一个帮助方法:
private Context getDialogContext() {
Context context;
if (getParent() != null) context = getParent();
else context = this;
return context;
}
Run Code Online (Sandbox Code Playgroud)
然后改变这条线
private final ProgressDialog dialog = new ProgressDialog(CheckInActivity.this);
Run Code Online (Sandbox Code Playgroud)
至
private final ProgressDialog dialog = new ProgressDialog(getDialogContext());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3290 次 |
| 最近记录: |