【问题标题】:How to show progress dialog in two activity when switch from one activity to Another从一个活动切换到另一个活动时如何在两个活动中显示进度对话框
【发布时间】:2012-07-16 08:43:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你最好在第二个活动的 onCreate 上显示对话框
  • 并在为第二个活动中的列表设置适配器后关闭

标签: android android-layout android-intent android-widget


【解决方案1】:

这是一个黑客:

在 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");
            }
        }

【讨论】:

    【解决方案2】:

    你应该使用 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();
        }
    }
    

    然后你就可以在你的onCreate中执行这个任务了

    new FetchTask().execute();
    

    【讨论】:

      【解决方案3】:

      您可以使用两个选项:

      1. 您可以在第一个Activity 关闭时停止对话框,然后在第二个ActivityonCreate 方法中再次显示它。正如 AkashG 在 cmets 中提到的那样。
      2. 如果您确实希望在转换到第二个Activity 期间显示对话框,您可以使用一个Activity 而不是两个,然后将那个Activity 的布局更改为使用第二个@ 的布局987654327@ 而不是打电话给另一个Activity。但是,这可能会很复杂,因为您会将两个 Activities 的功能集成到一个中。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-07-07
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多