我試圖向用戶顯示登錄對話框(自定義視圖的自定義對話框),然後單擊「登錄」時,我試圖顯示ProgressDialog,然後關閉它登錄已完成。未顯示Android ProgressDialog
問題是我無法獲得ProgressDialog顯示。
這裏是我的代碼:
private final MyActivity activity;
public MyPresenter(MyActivity activity) {
this.activity = activity;
}
public Dialog getLoginSignupDialog() {
final Dialog dialog = new Dialog(activity);
dialog.setContentView(R.layout.dialog_signup);
dialog.setTitle("Login");
final TextView email = (TextView)dialog.findViewById(R.id.textViewEmail);
final TextView password = (TextView)dialog.findViewById(R.id.textViewPassword);
Button signupButton = (Button)dialog.findViewById(R.id.buttonSignup);
signupButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
ProgressDialog progressDialog = null;
try {
progressDialog = ProgressDialog.show(activity, "", "Signing up...",false);
activity.signup(email.getText().toString(), password.getText().toString());
progressDialog.dismiss();
dialog.dismiss();
} catch (ParseException e) {
if (progressDialog != null) progressDialog.dismiss();
Toast.makeText(activity, "Sorry, an error occured.", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
});
return dialog;
}
此代碼是在演示當中去的傳遞主要活動實例。只是爲了保持UI邏輯獨立。
在主要活動(onCreate
),我這樣做:
showDialog(DIALOG_SIGNUP);
然後我重寫onCreateDialog
方法:
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case DIALOG_SIGNUP: {
dialog = presenter.getLoginSignupDialog();
break;
}
}
return dialog;
}
其他對話框(自定義登錄一個)被顯示精細,一切正常,關閉等,但我無法得到ProgressDialog顯示。
我在做什麼錯了?
我沒有得到這個...我在哪裏可以使用?我是否在我的onClick事件中使用AsyncTask代碼? – RPM1984
真棒,工作美麗...乾杯! – RPM1984