답변:
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에서 다른 의미를 갖습니다. (HTML의 선택 드롭 다운과 같습니다)
progress.setCancelable(false);
.
ProgressDialog
안드로이드 O가 사용됩니다 developer.android.com/reference/android/app/ProgressDialog.html
API Level 26 이후 ProgressDialog가 더 이상 사용되지 않습니다. 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" />
가시성을 .GONE | 사용 사례에 따라 .VISIBLE.
progressBar_cyclic.visibility = View.VISIBLE
사용하다 ProgressDialog
ProgressDialog.show(Context context, CharSequence title, CharSequence message);
그러나 이것은 오늘날의 안티 패턴으로 간주됩니다 (2013) : http://www.youtube.com/watch?v=pEGWcMTxs3I
ProgressDialog
안드로이드 O가 사용됩니다 developer.android.com/reference/android/app/ProgressDialog.html
당신은 서버에서 응답을 기다리고있는 사실 경우는 해야 프로그래밍 방식으로 수행 합니다. 진행 대화 상자를 만들어 닫을 수 있지만 다시 "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;
}
}
그런 다음 활동에서 Fragment Manager를 설정 하고 서버가 시작되기를 기다리면 대화 상자를 표시 하십시오.
FragmentManager fm = getSupportFragmentManager();
MySpinnerDialog myInstance = new MySpinnerDialog();
}
myInstance.show(fm, "some_tag");
서버가 응답하면 완료됩니다.
myInstance.dismiss()
진행률 대화 상자는 속성에 따라 스피너 또는 진행률 표시 막대 입니다. API 안내서 에서 자세한 내용을 읽으십시오.
ProgressDialog
안드로이드 O가 사용됩니다 developer.android.com/reference/android/app/ProgressDialog.html
한 번에 하나의 진행률 대화 상자 만 열 수 있도록이 작업을 수행 한 방법입니다. 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();
}
}
나도 사용해야 했어
protected void onResume() {
dismissLoadingDialog();
super.onResume();
}
ProgressDialog
안드로이드 O가 사용됩니다 developer.android.com/reference/android/app/ProgressDialog.html