5 ответов:
ProgressDialog устарел от Android Oreo. Используйте ProgressBar вместо
ProgressDialog progress = new ProgressDialog(this); progress.setTitle("Loading"); progress.setMessage("Wait while loading..."); progress.setCancelable(false); // disable dismiss by tapping outside of the dialog progress.show(); // To dismiss the dialog progress.dismiss();или
ProgressDialog.show(this, "Loading", "Wait while loading...");кстати, Spinner имеет другое значение в Android. (Это похоже на выпадающий список select в HTML)
использовать
ProgressDialogProgressDialog.show(Context context, CharSequence title, CharSequence message);
однако это рассматривается как анти шаблон сегодня (2013): http://www.youtube.com/watch?v=pEGWcMTxs3I
на самом деле, если вы ждете ответ от сервера должны быть сделано программно. Вы можете создать диалог прогресса и отклонить его, но опять же это не "путь android".
В настоящее время рекомендуется использовать DialogFragment:
public class MySpinnerDialog extends DialogFragment { public MySpinnerDialog() { // use empty constructors. If something is needed use onCreate's } @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { _dialog = new ProgressDialog(getActivity()); this.setStyle(STYLE_NO_TITLE, getTheme()); // You can use styles or inflate a view _dialog.setMessage("Spinning.."); // set your messages if not inflated from XML _dialog.setCancelable(false); return _dialog; } }затем в своей деятельности вы устанавливаете свой менеджер фрагментов и показать после того, как диалоговое окно подождите, пока сервер начал:
FragmentManager fm = getSupportFragmentManager(); MySpinnerDialog myInstance = new MySpinnerDialog(); } myInstance.show(fm, "some_tag");после того, как ваш сервер ответил полный вы его уволите:
myInstance.dismiss()помните, что progressdialog-это счетчик или progressbar в зависимости от атрибутов, Подробнее читайте на api guide
ProgressDialog стал устаревшим с уровня API 26 https://developer.android.com/reference/android/app/ProgressDialog.html
Я включаю ProgressBar в моем макете
<ProgressBar android:layout_weight="1" android:id="@+id/progressBar_cyclic" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="40dp" android:minWidth="40dp" />и изменить его видимость .ПРОПАЩИЙ. | Видимый в зависимости от варианта использования.
progressBar_cyclic.visibility = View.VISIBLE
вот как я это сделал, так что только один диалог прогресса может быть открыт одновременно. На основе ответа от Сураж Баджадж
private ProgressDialog progress; public void showLoadingDialog() { if (progress == null) { progress = new ProgressDialog(this); progress.setTitle(getString(R.string.loading_title)); progress.setMessage(getString(R.string.loading_message)); } progress.show(); } public void dismissLoadingDialog() { if (progress != null && progress.isShowing()) { progress.dismiss(); } }Я также должен был использовать
protected void onResume() { dismissLoadingDialog(); super.onResume(); }

Comments