2016-12-15 2 views
2

У меня есть метод, отвечающий за показ AlertDialog, и у него есть настраиваемый макет, который включает в себя EditText и кнопку OnPositive. Я пытаюсь получить значение текста редактирования, но EditText.getText() всегда возвращается пустым.AlertDialog Пользовательские макеты не доступны для Android

Код:

private void showForgetPassDialog() { 

     final View view = getLayoutInflater().inflate(R.layout.alert_dialog_forgot_pass, null); 

     AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); 
     builder.setCancelable(false); 
     builder.setTitle(getString(R.string.forgot_password)); 
     builder.setMessage(getString(R.string.reset_pass)); 
     final EditText emailTxt = (EditText) view.findViewById(R.id.email_field); 
     emailReset = emailTxt.getText().toString(); 
     String positiveText = getString(R.string.submit); 
     builder.setPositiveButton(positiveText, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         Toast.makeText(LoginActivity.this, "test :"+emailReset, Toast.LENGTH_SHORT).show(); 
         if(!emailReset.equals("") && isValidEmail(emailReset)){ 
          resetPassword(emailReset); 
         }else{ 
          emailTxt.setError(getString(R.string.error_email)); 
         } 

        } 
       }); 

     String negativeText = getString(R.string.cancel); 
     builder.setNegativeButton(negativeText, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
       }); 

     final AlertDialog dialog = builder.create(); 
     dialog.setOnShowListener(new DialogInterface.OnShowListener() { 
      @Override 
      public void onShow(DialogInterface dialogInterface) { 
       dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ContextCompat.getColor(LoginActivity.this,R.color.colorAccentDark)); 
       dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ContextCompat.getColor(LoginActivity.this,R.color.PrimaryBlue)); 

      } 
     }); 
     dialog.setView(view); 
     // display dialog 
     dialog.show(); 
    } 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="10dp" 
    android:layout_marginStart="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginEnd="10dp" 
    > 
    <EditText 
     android:textCursorDrawable="@null" 
     android:id="@+id/email_field" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:ellipsize="start" 
     android:gravity="center_horizontal" 
     android:hint="@string/email_label" 
     android:inputType="textEmailAddress" 
     android:textColor="#484848" /> 

    <View 
     android:id="@+id/login_bar" 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_below="@+id/email_field" 
     android:background="#e1e1e1" /> 

</RelativeLayout> 

ответ

1

вам нужно переместить

emailReset = emailTxt.getText().toString(); 

к внутренней OnClick слушателя.

builder.setPositiveButton(positiveText, 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        //Here!!!!!!!!! 
        emailReset = emailTxt.getText().toString(); 
        Toast.makeText(LoginActivity.this, "test :"+emailReset, Toast.LENGTH_SHORT).show(); 
        if(!emailReset.equals("") && isValidEmail(emailReset)){ 
         resetPassword(emailReset); 
        }else{ 
         emailTxt.setError(getString(R.string.error_email)); 
        } 

       } 
      }); 
+0

ух ты права –

+0

, но я не в состоянии установить сообщение об ошибке EditText как тогда, когда он входит в другое оповещения диалога заявления закрывается без установки сообщения об ошибке EditText –

+1

@MehvishFaisal после нажатия на кнопке, оповещение Диалог уволит себя вместе с обратным вызовом к слушателю onClick –

Смежные вопросы