的我有在中心具有簡單不確定進度條,這我使用來顯示網絡活動的對話片段顯示():的Android DialogFragment不表示當調用的onCreate活動
public class NativeLoadingDialogFragment extends DialogFragment {
public NativeLoadingDialogFragment() {
// Blank
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity(), android.R.style.Theme_Dialog);
ProgressBar indeterminateProgressBar = new ProgressBar(getActivity());
indeterminateProgressBar.setIndeterminate(true);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
dialog.setContentView(indeterminateProgressBar);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
return dialog;
}
public boolean isShowing() {
return getDialog() != null;
}
}
我已經使用了對話框片段在整個我的應用程序沒有問題,它顯示沒有問題在很多地方,當我打電話dialog.show(getFragmentManager, null)
,但是當我嘗試在我的設置活動onResume調用它不顯示!
我有一個設置的活動,它啓動系統設置來更改手機的語言。一旦用戶改變了語言和我的活動恢復我發現如果語言發生了變化,並做了網絡呼叫:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mLoading = new NativeLoadingDialogFragment();
if (savedInstanceState != null) {
if (savedInstanceState.containsKey(EXTRA_LANGUAGE)) {
String language = savedInstanceState.getString(EXTRA_LANGUAGE);
String currentLanguage = AppUtils.getDefaultLanguageCode(
SmartBankConstant.DEFAULT_LANGUAGE,
SmartBankConstant.SUPPORTED_LANGUAGES);
if (!language.equals(currentLanguage)) {
updateLanguage(Language.stringToLanguage(currentLanguage));
}
}
}
}
private void updateLanguage(Language newLanguage) {
....
getSpiceManager().execute(new SetLanguageRequest(newLanguage),
new SetLanguageRequestListener(this));
mLoading.show(getFragmentManager(), null);
getFragmentManager().executePendingTransactions();
}
代碼絕對運行,但沒有出現對話框!如果網絡呼叫失敗,我有一個重試選項,再次調用updateLanguage(Language newLanguage)
方法,並且該對話框實際上顯示該時間!我究竟做錯了什麼?
在我看來,你只是調用'show()'方法一次,也就是說'updateLanguage()'方法。在第一次運行時,'language.equals(currentLanguag))'檢查成功,所以不調用updateLanguage()。 – Sebastiano