Как показать диалог прогресса в двух действиях при переключении с одного занятия на другое

1

В моем приложении Android первое действие вызывает REST API для получения списка элементов с использованием учетных данных. Теперь при нажатии на любой элемент идентификатор элемента передается, а второе действие вызывается с использованием намерения. Это второе действие вызывает REST API с использованием пропущенного id и показывает список подпунктов для этого идентификатора.

Я использую Progress Dialog в первом действии. Это работает нормально. Я хочу, чтобы этот диалог прогресса также продолжался во втором действии, пока список подменю не будет отображаться.

В настоящее время диалог прогресса исчезает, когда начинается второй запуск, и появляется пустой экран, пока суб-список не будет извлечен.

Может ли кто-нибудь помочь мне, как я могу продолжить диалог прогресса во втором действии и уволить, когда появится дополнительный список.

  • 6
    лучше показывать диалог на onCreate на втором занятии
  • 1
    и отклонить после установки адаптера для списка во втором действии
Теги:
android-layout
android-intent
android-widget

6 ответов

0
Лучший ответ

Вы можете использовать два варианта:

  1. Вы можете остановить диалог, когда первая Activity уволен, а затем показать его еще раз в onCreate метод на вашей второй Activity. Как упоминал AkashG в комментариях.
  2. Если вы действительно хотите, чтобы диалоговое окно будет показаны во время перехода ко второй Activity, вы можете использовать один Activity вместо двух и изменить расположение этой Activity, чтобы использовать макет второй Activity вместо вызова другой Activity. Однако это может быть сложным, поскольку вы реализуете функции двух ваших Activities в один.
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");
            }
        }
0

Если у вас есть это 2 действия. Лучший способ - также иметь диалог прогресса в вашем втором действии. Поскольку, как только начинается ваше второе действие, первое действие переходит к фону. Вы не можете ожидать, что диалог прогресса первого действия будет все еще видимым, поскольку он перемещен в обратную сторону. Самый лучший способ - создать диалог прогресса в своем втором действии и показать, когда вы пытаетесь получить свой подсписчик. отмените диалог прогресса после заполнения подсписного UI.

0

Вы используете 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();
0

Я предпочел бы использовать фрагменты в вашем случае (при необходимости, используя библиотеку поддержки). Затем вы изменяете эти два действия на фрагменты и создаете методы showProgressDialog и hideProgressDialog для (родительской) активности. Диалог прогресса всегда будет виден, потому что он в том же самом действии, но фрагменты будут иметь полностью разделенную логику, такую же, как и активность.

0

Это единственное решение для вашего диалога-ответа on onCreate on second activity

Как вы сказали, диалог прогресса исчезает, когда начинается второй запуск, и появляется пустой экран, пока суб-список не будет извлечен. Решение может быть как отклонение диалогового окна, когда данные в списке полностью меняют после установки адаптера в список, который вы можете откройте диалог, и он не будет показывать пустой экран.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню