Cómo extraer texto de una vista EditText - Android

Así que supongo que fue tan simple como usar getText() para recuperar la información :)

Así es como terminó:

public void getToast(View v) {
    EditText et = (EditText) findViewById(R.id.userText);
    String toastText = et.getText().toString();
    if (toastText == "" || toastText == null) {
        Toast.makeText(this, "This is a nice toast!", Toast.LENGTH_SHORT).show();   
    }
    else {
    Toast.makeText(this, toastText, Toast.LENGTH_SHORT).show();
    }
}

He creado un Editar texto Ver en el archivo de diseño principal. A esto se hace referencia con el texto de usuario identificador como es un Editar texto campo, el usuario puede modificar el texto que contiene en cualquier momento; lo que estoy tratando de lograr es recuperar el texto que el usuario ingresó en el momento en que toca el botón identificado como obtenerToasty luego muéstrelo como un brindis.

Estoy usando la clase de recursos en este momento (¿mi primera suposición?) para recuperar la cadena almacenada en brindisTexto pero esto es inútil, ya que está extrayendo el texto almacenado en main.xml, que está vacío, ya que no declaré ningún atributo "android: texto" para esa vista, en su lugar usé un "android: sugerencia" para decirle al usuario que ingrese el texto.

Había leído sobre intentos, pero eso tiene sentido si tuviera que enviar el String a otra actividad, no dentro de la misma. Lo había pensado como una tarea simple, pero está consumiendo más tiempo del que tenía esperanza :P

IVA:

La obtenerToast se define como "android:OnClickMethod" para un botón creado en el XML. Funcionará con cualquier otra cadena de texto.

¿Alguna idea?

package com.testlabs.one;

import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class initialui extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
}

public void getToast(View v) {
    Resources myResources = getResources();
    String toastText = myResources.getString(R.string.toast); 
    if (toastText == "" || toastText == null) {
        Toast.makeText(this, "This is a nice toast!", Toast.LENGTH_SHORT).show();   
    }
    else {
    Toast.makeText(this, toastText, Toast.LENGTH_SHORT).show();
    }
}
}

preguntado el 12 de junio de 12 a las 20:06

3 Respuestas

Simplemente llamas a la función getText() en TextView.

Ejemplo:

public void getToast( View v )
{
    String toastText = ( (EditText)v ).getText();
    if ( toastText.length() == 0 ) {
        toastText = getResources().getString( R.string.toast );
    }
    Toast.makeText( this, toastText, Toast.LENGTH_SHORT ).show();
}

Este código mostrará un brindis con el texto en su EditText cuando esté disponible y el texto predeterminado en el toast recurso cuando no se ingresó nada.

Respondido el 12 de junio de 12 a las 20:06

Gracias hombre, me siento como un idiota :( Sin embargo, funcionó, y obtuve el Toast para mostrar el texto en la Vista :) - daniel_c05

Si solo desea enviar una cadena de una actividad a otra a través de un Intent

Intent intent = new Intent();
intent.putExtra("key","stringValue");
startActivity(intent);

luego en tu otra actividad

Intent intent = getIntent();
String value = intent.getStringExtra("key","defaultstring");

Respondido el 12 de junio de 12 a las 20:06

Pienso esto:

EditText et = (EditText) findViewById(R.id.userText);
String toastText = et.getText().toString();

Debería ser esto:

String toastText  = findViewById(R.id.userText).toString();

De lo contrario, me gustaría saber por qué necesitaba usar la fase intermedia y no enviarla directamente a un objeto String de Java.

respondido 28 mar '13, 09:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.