2011-03-16 27 views
38

Parece que no puedo encontrar la manera de sacar la cadena de texto de EditText. Quiero usar el texto del EditText al presionar el botón.¿Obtener cadena de texto de EditText?

layout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/popup_menu_root" 
    android:background="#FFFFFF" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <Button android:id="@+id/popup_menu_button" 
     android:text="ok" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
    <EditText 
     android:id="@+id/edittext" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

Mi Actividad:

public class MyClass extends Activity { 

    public String txtCheckin = "???"; 
    private String txtDescription = "???"; 
    private PopupWindow pw; 

    @Override 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    // get the instance of the LayoutInflater 
    LayoutInflater inflater = (LayoutInflater) MyClass.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    // inflate our view from the corresponding XML file 
    final View layout = inflater.inflate(R.layout.popuplayout, (ViewGroup)findViewById(R.id.popup_menu_root)); 
    // create a 100px width and 200px height popup window 
    pw = new PopupWindow(layout, 100, 200, true); 

    final EditText edittextDescription = (EditText) findViewById(R.id.edittext); 

    // set actions to buttons we have in our popup 
    Button button = (Button)layout.findViewById(R.id.popup_menu_button); 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View vv) { 


     if (edittextDescription.getText() != null) 
     { 
      String newString = edittextDescription.getText().toString(); 
      transmitCheck("MANUAL", txtCheckin, "1", newString); 
     } 
     else 
     { 
      transmitCheck("MANUAL", txtCheckin, "1", "???"); 
     } 


     finish(); 
     } 
    }); 
} 

Respuesta

5

Resuelto el problema por mí mismo:

final EditText edittextDescription = (EditText) findViewById(R.id.edittext); 

debe haber

final EditText edittextDescription = (EditText)layout.findViewById(R.id.txtDescription); 

Y entonces yo puedo hacer esto para conseguir la cadena

String s = edittext.getText().toString(); 
62
private EditText txtDescription = 
     (EditText) layout.findViewById(R.id.txtDescription)  
String string = txtDescription.getText().toString(); 
+1

¿No puedes hacer 'String cadena = (EditarTexto) layout.findViewById (R. id.txtDescription) .getText(). toString'? –

+1

Sí, podrías. Pero hacer esa búsqueda dos veces es más lento que mantener una referencia a EditText también. – Shark

16

Prueba esto:

EditText edt = (EditText)findViewById(R.id.edittext); 
String xyz = edt.getText().toString(); 
Cuestiones relacionadas