Apa cara terbaik untuk menunjukkan pemuatan pemintal saat aplikasi sedang menunggu respons dari server?
Bisakah ini dilakukan secara terprogram? Jadi saya tidak perlu menambahkan load spinner di file xml?
Apa cara terbaik untuk menunjukkan pemuatan pemintal saat aplikasi sedang menunggu respons dari server?
Bisakah ini dilakukan secara terprogram? Jadi saya tidak perlu menambahkan load spinner di file xml?
Jawaban:
ProgressDialog tidak digunakan lagi di Android Oreo. Gunakan ProgressBar sebagai gantinya
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();
ATAU
ProgressDialog.show(this, "Loading", "Wait while loading...");
Omong-omong, Spinner memiliki makna berbeda di Android. (Ini seperti dropdown pilih dalam HTML)
progress.setCancelable(false);
.
ProgressDialog
sudah tidak digunakan lagi di Android O developer.android.com/reference/android/app/ProgressDialog.html
ProgressDialog menjadi tidak digunakan lagi sejak API Level 26 https://developer.android.com/reference/android/app/ProgressDialog.html
Saya menyertakan ProgressBar di tata letak saya
<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" />
dan ubah visibilitasnya menjadi .GONE | . TERLIHAT tergantung pada use case.
progressBar_cyclic.visibility = View.VISIBLE
Menggunakan ProgressDialog
ProgressDialog.show(Context context, CharSequence title, CharSequence message);
Namun ini dianggap sebagai pola anti hari ini (2013): http://www.youtube.com/watch?v=pEGWcMTxs3I
ProgressDialog
sudah tidak digunakan lagi di Android O developer.android.com/reference/android/app/ProgressDialog.html
Sebenarnya jika Anda menunggu respons dari server, itu harus dilakukan secara terprogram. Anda dapat membuat dialog progres dan mengabaikannya, tetapi sekali lagi itu bukan "cara android".
Saat ini metode yang disarankan adalah menggunakan 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;
}
}
Kemudian dalam aktivitas Anda, Anda mengatur manajer Fragmen Anda dan menampilkan dialog setelah menunggu server dimulai:
FragmentManager fm = getSupportFragmentManager();
MySpinnerDialog myInstance = new MySpinnerDialog();
}
myInstance.show(fm, "some_tag");
Setelah server Anda merespons selesai, Anda akan mengabaikannya:
myInstance.dismiss()
Ingat bahwa progressdialog adalah pemintal atau progressbar tergantung pada atribut, baca lebih lanjut tentang panduan api
ProgressDialog
sudah tidak digunakan lagi di Android O developer.android.com/reference/android/app/ProgressDialog.html
Ini adalah bagaimana saya melakukan ini sehingga hanya satu dialog progres yang dapat dibuka pada suatu waktu. Didasarkan atas jawaban dari Suraj Bajaj
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();
}
}
Saya juga harus menggunakan
protected void onResume() {
dismissLoadingDialog();
super.onResume();
}
ProgressDialog
sudah tidak digunakan lagi di Android O developer.android.com/reference/android/app/ProgressDialog.html