私のカスタムでは、正のボタンのイベントを、を実行するカスタムでDialogPreference
オーバーライドします。私のクラスはおおよそ次のようになります。onClick
View.onClickListener
AsyncTask
public class LoginDialog extends DialogPreference {
private Context mContext;
public LoginDialog(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
setDialogLayoutResource(R.layout.login_dialog);
}
@Override
protected void showDialog(Bundle bundle) {
super.showDialog(bundle);
Button pos = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE);
pos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
new LoginTask(mContext, LoginDialog.this).doInBackground(user_name, user_password);
}
});
}
public class LoginTask extends AsyncTask<String, Void, Boolean> {
private LoginDialog mDialog;
private Context mContext;
public LoginTask(Context cx, LoginDialog loginDialog) {
super();
mDialog = loginDialog;
mContext = cx;
}
protected void onPreExecute() {
// this is not called, at least nothing shows up in the logs
}
protected Boolean doInBackground(String... params) {
// this is called
}
protected void onPostExecute(Boolean success) {
// this is not called, at least nothing shows up in the logs
}
}
}
onPre/PostExecute
メソッドが呼び出されないのはなぜですか? トーストを表示したり、ログを記録したりしましたが、何も表示されません。doInBackground
メソッドが呼び出されることを確認しました。