1

在我的 android 应用程序中,第一个活动调用 REST API 以使用凭据获取项目列表。现在单击任何项​​目时,都会传递项目 ID,并使用意图调用第二个活动。第二个活动使用传递的 id 调用 REST API,并显示该 id 的子项列表。

我在第一个活动中使用进度对话框。这工作正常。我希望这个进度对话框也在第二个活动中继续,直到子项目列表不显示。

目前进度对话框随着第二个活动的开始而消失,并且出现一个空白屏幕,直到子列表未获取。

谁能指导我如何在第二个活动中继续进度对话框并在出现子列表时关闭。

4

6 回答 6

2

这是一个黑客:

在 ActivityA.java 中将 ProgressDialog pd 声明为静态

public static ProgressDialog pd;

在 ActivityB.java 中使用静态引用ActivityA.pd,然后使用下面的代码。

if (ActivityA.pd != null) {
            if (ActivityA.pd.isShowing()) {
                ActivityA.pd.dismiss();
            }
            else {
                Log.e(Vars.TAG, "It is NOT SHOWING");
            }
        }
于 2012-10-09T00:31:24.170 回答
1

你应该使用 AsyncTask

class FetchTask extends AsyncTask<Object, Object, Object>
{
    ProgressDialog progress;

    @Override
    protected void onPreExecute() 
    {
         super.onPreExecute();
         progress=ProgressDialog.show(Context, "", "Loading...");
    }

    @Override
    protected Object doInBackground(Object... params) 
    {

        // fetch your data here 

         return null;
    }

    @Override
    protected void onPostExecute(Object result) 
    {
        super.onPostExecute(result);
        progress.dismiss();
    }
}

然后你可以在你的onCreateas中执行这个任务

new FetchTask().execute();
于 2012-07-16T10:59:26.353 回答
0

您可以使用两个选项:

  1. Activity您可以在第一个被关闭时停止对话框,然后onCreate在第二个的方法中再次显示它Activity。正如 AkashG 在评论中提到的那样。
  2. 如果您真的希望在过渡到第二个时显示对话框Activity,您可以使用一个Activity而不是两个,并将其布局更改Activity为使用第二个的布局Activity而不是调用另一个Activity。但是,这可能会很复杂,因为您会将两者的功能Activities集成到一个中。
于 2012-07-16T08:54:25.310 回答
0

这是您在第二个活动的 onCreate 上的答案显示对话框的唯一解决方案

正如你所说 - 当第二个活动开始时进度对话框消失并且出现一个空白屏幕直到子列表没有获取。解决方案可以是当列表中的数据完全设置时关闭对话框我的意思是在将适配器设置为列表之后你可以关闭对话框,它不会显示空白屏幕。

于 2012-07-16T09:23:29.723 回答
0

我宁愿在您的情况下使用片段(如果需要,使用支持库)。然后将这两个活动更改为片段并在(父)活动上创建 showProgressDialog 和 hideProgressDialog 方法。进度对话框将始终可见,因为它在同一个活动中,但片段将具有完全分离的逻辑,与活动相同。

于 2012-07-16T09:52:54.893 回答
0

如果您将其作为 2 项活动。最好的方法是在你的第二个活动中也有进度对话框。因为一旦你的第二个活动开始,第一个活动就会进入后台。你不能期望第一个活动的进度对话框仍然可见移到后面。最好的方法是在您的第二个活动中显示一个进度对话框,并在您尝试检索子列表时显示。填充子列表 UI 后关闭进度对话框。

于 2013-08-30T15:13:17.720 回答