В моем приложении Android первое действие вызывает REST API для получения списка элементов с использованием учетных данных. Теперь при нажатии на любой элемент идентификатор элемента передается, а второе действие вызывается с использованием намерения. Это второе действие вызывает REST API с использованием пропущенного id и показывает список подпунктов для этого идентификатора.
Я использую Progress Dialog в первом действии. Это работает нормально. Я хочу, чтобы этот диалог прогресса также продолжался во втором действии, пока список подменю не будет отображаться.
В настоящее время диалог прогресса исчезает, когда начинается второй запуск, и появляется пустой экран, пока суб-список не будет извлечен.
Может ли кто-нибудь помочь мне, как я могу продолжить диалог прогресса во втором действии и уволить, когда появится дополнительный список.
Вы можете использовать два варианта:
Activity
уволен, а затем показать его еще раз в onCreate
метод на вашей второй Activity
. Как упоминал AkashG в комментариях.Activity
, вы можете использовать один Activity
вместо двух и изменить расположение этой Activity
, чтобы использовать макет второй Activity
вместо вызова другой Activity
. Однако это может быть сложным, поскольку вы реализуете функции двух ваших Activities
в один.Это взломать:
В 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 действия. Лучший способ - также иметь диалог прогресса в вашем втором действии. Поскольку, как только начинается ваше второе действие, первое действие переходит к фону. Вы не можете ожидать, что диалог прогресса первого действия будет все еще видимым, поскольку он перемещен в обратную сторону. Самый лучший способ - создать диалог прогресса в своем втором действии и показать, когда вы пытаетесь получить свой подсписчик. отмените диалог прогресса после заполнения подсписного UI.
Вы используете 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();
Я предпочел бы использовать фрагменты в вашем случае (при необходимости, используя библиотеку поддержки). Затем вы изменяете эти два действия на фрагменты и создаете методы showProgressDialog и hideProgressDialog для (родительской) активности. Диалог прогресса всегда будет виден, потому что он в том же самом действии, но фрагменты будут иметь полностью разделенную логику, такую же, как и активность.
Это единственное решение для вашего диалога-ответа on onCreate on second activity
Как вы сказали, диалог прогресса исчезает, когда начинается второй запуск, и появляется пустой экран, пока суб-список не будет извлечен. Решение может быть как отклонение диалогового окна, когда данные в списке полностью меняют после установки адаптера в список, который вы можете откройте диалог, и он не будет показывать пустой экран.