我正在尝试从EditText获取文本,但我已经注销了EditText并且它为null。我试图从自定义视图中膨胀它。我错了吗?
我知道prompsView是我的自定义AlertDialog视图,其中是我的EditText。也许我应该在充气时传递提示视图,只是不知道该怎么做。
public void showPasswordDialogBox(){
LayoutInflater li = LayoutInflater.from(NfcscannerActivity.this);
View promptsView = li.inflate(R.layout.passwordpromptdialogboxlayout, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
NfcscannerActivity.this);
// set prompts.xml to alertdialog builder
alertDialogBuilder.setView(promptsView);
// set dialog message
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
EditText passwordPin = (EditText)findViewById(R.id.passwordprompttextview);
Log.e(TAG, "edittext is null ? " + passwordPin);
String passPin = passwordPin.getText().toString();
Log.e(TAG, "password from edittext = " + passPin);
Cursor c = nfcscannerapplication.loginValidate.queryAllFromCarer();
if(c != null){
c.moveToLast();
String passPinFromDB = c.getString(c
.getColumnIndex(LoginValidate.C_PASSWORD));
if (passPin.trim().equalsIgnoreCase(passPinFromDB)){
Log.e(TAG, "passwords match");
DateTime now = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("d-MMM-Y");
String formattedNow = fmt.print(now);
String[] params = new String[]{carerID, formattedNow};
AsyncGetRota agr = new AsyncGetRota();
agr.execute(params);
}else{
Toast.makeText(NfcscannerActivity.this,
"Please check Password/Pin",
Toast.LENGTH_LONG).show();
showPasswordDialogBox();
}
}else{
Log.e(TAG, "cursor null while trying to verify password in showPasswordDialogBox() ");
}
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
答案 0 :(得分:2)
尝试:
EditText passwordPin = (EditText) promptsView.findViewById(R.id.passwordprompttextview);