非表示にできないアラートダイアログで問題が発生しています。
ユーザーがボタンを押すと、次のコードで作成されたダイアログが表示されます。
new AlertDialog.Builder(this)
.setTitle(R.string.enterPassword)
.setView(textEntryView)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String password = pwdText.getText().toString();
dialog.dismiss();
processUserAction(password,targetUri);
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.
create();
'processUserAction'メソッドで実行されるいくつかの重い操作があり、その中でProgressDialogを表示するAysncTaskを使用しています。
私が抱えている問題は、パスワードの入力を求めるダイアログが画面に表示されないことです(dismiss()、cancel()で試しました)。onClickメソッドが終了するまでそこにとどまると思います。
だから、私の質問は、そのAlertDialogを閉じる方法です。そうすれば、ProgressDialogを表示できますか?
私が試みてきたもう1つのアプローチは、AlertDialogにDismissListenerを設定し、そこから重い操作を呼び出すことですが、運がありませんでした(呼び出されませんでした)。
編集:AsyncTaskコードを追加する
public class BkgCryptOperations extends AsyncTask<File,Void,Integer>{
@Override
protected Integer doInBackground(File... files) {
if (files!=null && files.length > 0){
File source = files[0];
File target = files[1];
return cryptAction.process(source,password, target);
}
return Constants.RetCodeKO;
}
CryptAction cryptAction;
String password;
ProgressDialog progressDialog;
public BkgCryptOperations (CryptAction cryptAction,String password,ProgressDialog progressDialog){
this.cryptAction=cryptAction;
this.password=password;
this.progressDialog=progressDialog;
}
@Override
protected void onPreExecute() {
if (progressDialog!=null){
progressDialog.show();
}
}
protected void onPostExecute(Integer i) {
if (progressDialog!=null){
progressDialog.dismiss();
}
}
}
前もって感謝します