从自定义对话框视图膨胀时,编辑文本为空



我正在尝试从编辑文本中获取文本,但我已经注销了编辑文本,它是空的。我试图从自定义视图膨胀它。我充气不正确吗?

我知道prompsView是我的自定义AlertDialog视图,其中是我的EditText。也许我应该在充气时通过 prompsView,只是不知道该怎么做。

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();
    }

尝试:

EditText passwordPin = (EditText) promptsView.findViewById(R.id.passwordprompttextview);

最新更新