2017-02-15 6 views
0

Ich bin so müde auf den Fehler zu finden. Ich habe keinen Fehler gefunden, aber ich bekomme keinen Text von editText. Betrachten Sie bitte folgenden Code:EditText on Dialog gibt keinen Text zurück

activity_pwd.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout_root" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:padding="10dp" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Enter PIN " 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<EditText 
    android:id="@+id/pwdValue" 
    android:layout_width="match_parent" 
    android:maxLength="4" 
    android:maxLines="1" 
    android:inputType="numberPassword" 
    android:layout_height="wrap_content"> 
</EditText> 
</LinearLayout> 

I LockImmediately genannt (this); auf onCreate Methode von MainActivity

public void LockImmediately(Context context) { 
    if (lock_app) { 
     View myview = LayoutInflater.from(context).inflate(R.layout.activity_pwd,null); 
     enterPWD = (EditText) myview.findViewById(R.id.pwdValue); 

     AlertDialog alertDialog = new AlertDialog.Builder(this).setCancelable(false) 
       .setView(R.layout.activity_pwd).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         String user_text = enterPWD.getText().toString(); 
         Log.d("onCreate pws", " i "+user_text); 
         if (pwd.equals(user_text)) { 
          dialog.dismiss(); 
          Log.d("onCreate", "Work done"); 
         } else { 
          dialog.dismiss(); 
          MainActivity.this.finish(); 
         } 
        } 
       }).create(); 
     alertDialog.show(); 
    } 
} 

Log.d

02-15 23:15:30.840 29379-29379/com.developersqueen.wishlater D/onCreate: onCreate 
02-15 23:15:37.021 29379-29379/com.developersqueen.wishlater D/onCreate pws: i 
02-15 23:15:45.427 29379-29379/com.developersqueen.wishlater D/onCreate: onCreate 
02-15 23:15:49.026 29379-29379/com.developersqueen.wishlater D/onCreate pws: i 

Sie, dass log darüber sehen kann habe ich verketten EditText Wert mit "i", aber es ist der Rückkehr keinen Wert .. Ich habe versucht, Daten zu löschen, App unistalling, sauber, bau alles aber das gleiche Ergebnis immer !! Jede mögliche Hilfe würde geschätzt ..

+0

versuchen, 'enterPWD.getText(). ToString();' zu 'alertDialog.findViewById (R.id.pwdValue) .getText(). ToString(); ', und sehen, ob es funktioniert – Sanjeet

+0

nein gibt es Fehler auf kompilieren illegal character \ u200c –

+0

Dann entfernen Sie das illegale Zeichen und versuchen Sie – Sanjeet

Antwort

1

Wenn Sie die Ansicht auf den Alertdialog einstellen, sollten Sie die Ansicht festgelegt, in dem Sie die ID des EditText gefunden.

Sie haben myview verwendet, um die ID des EditText zu finden, aber Sie versuchen, myView von der Aktivität und nicht vom Dialog abzurufen.

Wenn Sie die Ansicht eingestellt myview sein, können Sie den Text aus dem enterPWD EditText bekommen.

AlertDialog alertDialog = new AlertDialog.Builder(this).setCancelable(false) 
       .setView(myview).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
... 
} 

Sie sollten ein separates Layout für die Aktivität und für den Dialog selbst erstellen. Nicht ein Layout für beide zu verwenden.

+0

Vielen Dank Mann! Das hat wie ein Charme funktioniert !!^_ ^. –

0

Sie ein View aufblasen und legen Sie es,

View myview = LayoutInflater.from(context).inflate(R.layout.activity_pwd,null); ist NICHT die View des Dialogs, es ist eine nutzlose Instanz.

Sie übergeben die ID des Layouts an den Dialog, der seine eigene Version in .show() aufbläht. Verwenden Sie stattdessen alertDialog.findViewById(R.id.pwdValue) direkt in onClick(..).

+0

lassen Sie mich überprüfen –

+0

werfen null Zeiger Ausnahme –

+0

bei welcher Zeile? Ich kopiere einfach eingefügt und es funktioniert – CrowsNet

0

Versuchen Sie, diese

public void LockImmediately(Context context) { 
    if (lock_app) { 
     AlertDialog alertDialog = new AlertDialog.Builder(this).setCancelable(false) 
       .setView(R.layout.activity_pwd).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
          EditText enterPWD = (EditText) myview.findViewById(R.id.pwdValue); 
          String user_text = enterPWD.getText().toString(); 
          Log.d("onCreate pws", " i "+user_text); 
          if (pwd.equals(user_text)) { 
           dialog.dismiss(); 
           Log.d("onCreate", "Work done"); 
          } else { 
           dialog.dismiss(); 
           MainActivity.this.finish(); 
          } 
         } 
        }).create(); 
      alertDialog.show(); 
     } 
    } 
+0

Welche Änderungen haben Sie Sir gemacht? –

+0

Ich entferne dein Layout aufblasen und anfängliche Bearbeitung Text innerhalb der auf @ appleappala –

Verwandte Themen