Obtener valor de un campo Editar texto

439

Estoy aprendiendo a crear elementos de la interfaz de usuario. He creado algunos campos de entrada EditText. Al hacer clic en un botón, quiero capturar el contenido escrito en ese campo de entrada.

<EditText android:id="@+id/name" android:width="220px" />

Ese es mi campo. ¿Cómo puedo obtener el contenido?

Harsha MV
fuente
21
La cantidad de votos a favor demuestra que anular toStringno produce la API más reconocible , sin embargo, la técnica es elegante.
vemv
29
La gramática y el sentimiento en su comentario es realmente difícil de entender ...
IcedDante
77
@vemv El problema con la API es devolver un Editableobjeto donde los usuarios esperan y necesitan un simple String99% de las veces.
Amir Ali Akbari
Creo que Android es genial, pero me sorprende haber tenido que buscarlo en Google (y en cómo detectar cuándo ha cambiado el valor y está listo para leerlo, lo que puede ser complicado). ¡Creo que lo han hecho más difícil de lo necesario!
nsandersen

Respuestas:

686

Al usar getText ():

Button   mButton;
EditText mEdit;

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

    mButton = (Button)findViewById(R.id.button);
    mEdit   = (EditText)findViewById(R.id.edittext);

    mButton.setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.v("EditText", mEdit.getText().toString());
            }
        });
}
svdree
fuente
77
Si no coloca EditText en el ámbito de clase, y en su lugar lo declara en OnCreate, quiere que se declare como final. Supongo que es mejor no hacerlo final, pero ¿es la única forma de hacerlo, hacerlo en toda la clase? ¿Es hacer de toda la clase la mejor manera de hacer esto?
PFranchise
1
@PFranchise ¿Qué quieres decir con "toda la clase"? Paquete protegido (como en el ejemplo)? ¿Privado? ¿Por qué no querrías tener un widget accesible en toda la clase?
Zelphir Kaltstahl
3
<rant> No es una solicitud de más información o sugerencia. Tampoco un agradecimiento o +1. ¡ESTE ES TERRIBLE! ¿Por qué alguien pensaría que esta es la forma correcta de diseñar un cuadro de texto? Además, EditText es el nombre menos intuitivo que podrían encontrar. </rant>
Roy Falk
22

Supongo que tendrá que usar este código cuando llame al "mEdit" su objeto EditText:

myActivity.this.mEdit.getText().toString()

Solo asegúrese de que el compilador sepa a qué EditTextllamar y usar.

Ahmed Lotfy
fuente
77
debe agregar una explicación de dónde viene el "mEdit".
nulo
18

Obtenga valor de un EditTextcontrol en Android. EditText getTextuso de la propiedad para obtener valor y EditText:

EditText txtname = findViewById(R.id.name);
String name      =  txtname.getText().toString();
Chandra Kumar
fuente
11

Espero que este funcione:

Integer.valueOf(mEdit.getText().toString());

Probé el Integer.getInteger()método en lugar de valueOf(), no funcionó.

Karthikeyan Palaniswamy
fuente
99
Esto supone que el valor es un número entero ... no estoy seguro de dónde lo recogió en la pregunta.
Joshua Pinter
9
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

  Button  rtn = (Button)findViewById(R.id.button);
  EditText edit_text   = (EditText)findViewById(R.id.edittext1);

    rtn .setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.v("EditText value=", edit_text.getText().toString());
            }
        });
}
Afzaal Ahmad Zeeshan
fuente
7

También es posible que desee echar un vistazo a Butter Knife . Su objetivo es reducir la cantidad de código repetitivo mediante anotaciones. Aquí hay un ejemplo simple:

public class ExampleActivity extends ActionBarActivity {

    @InjectView(R.id.name)
    EditText nameEditText;

    @InjectView(R.id.email)
    EditText emailEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example);
        Butterknife.inject(this);
    }

    @OnClick(R.id.submit)
    public void onSubmit() {
         Editable name = nameEditText.getText();
         Editable email = emailEditText.getText();
    }
}

Simplemente agregue la siguiente dependencia a su build.gradle:

compile 'com.jakewharton:butterknife:x.y.z'

Como alternativa, también hay anotaciones de Android .

JJD
fuente
5

Más corto y más simple

getText(editText);

getText(button);

getText(textView);

Poca solución

Simplemente haga un método en su BaseActivity / cree BaseActivity si no tiene.

public class BaseActivity extends AppCompatActivity{
    public String getText(TextView tv) {
        return tv.getText().toString().trim();
    } 
}

Y amplíe todas sus actividades con esta BaseActivity.

public class YourActivity extends BaseActivity {
  @Override
  public void onCreate(Bundle savedInstanceState){
     getText(editText);
     getText(button);
     getText(textView);
  }
}

Tenga en cuenta que EditText, se Buttonextiende TextView, así que solo creé getText(TextView tv).

Khemraj
fuente
2

Una forma más avanzada sería usar el bindview de butterknife. Esto elimina el código redundante.

En tu gradle bajo dependencias; agregue estas 2 líneas.

compile('com.jakewharton:butterknife:8.5.1') {
        exclude module: 'support-compat'
    }
apt 'com.jakewharton:butterknife-compiler:8.5.1'

Luego sincronízate. Ejemplo de texto de edición de enlace en MainActivity

import butterknife.BindView;   
import butterknife.ButterKnife; 

public class MainActivity {

@BindView(R.id.name) EditTextView mName; 
...

   public void onCreate(Bundle savedInstanceState){
         ButterKnife.bind(this); 
         ...
   }

}

Pero esta es una alternativa una vez que se sienta más cómodo o comience a trabajar con muchos datos.

Emily Alexandra Conroyd
fuente
1

Paso 1: crea un diseño con el nombre activity_main.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context=".MainActivity"
    android:background="#c6cabd"
    >
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="17dp"
        android:textColor="#ff0e13"
        />
    <EditText
        android:id="@+id/et"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:hint="Input your country"
        />
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Get EditText Text"
        android:layout_below="@id/et"
        />
</RelativeLayout>

Paso 2: crear la clase Main.class

public class Main extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.btn);
        final TextView tv = (TextView) findViewById(R.id.tv);
        final EditText et = (EditText) findViewById(R.id.et);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String country = et.getText().toString();
                tv.setText("Your inputted country is : " + country);
            }
        });
 }
}
Tienanhvn
fuente
1

Valor de cadena = YourEditText.getText (). ToString;

Malik Ali
fuente
¿Cómo difiere esta respuesta de las respuestas ya existentes?
Matt Ke
0

Prueba este código

final EditText editText = findViewById(R.id.name); // your edittext id in xml
Button submit = findViewById(R.id.submit_button); // your button id in xml
submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) 
    {
        String string = editText.getText().toString();
        Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();
    }
});
Himanshu itmca
fuente
-8
    Button kapatButon = (Button) findViewById(R.id.islemButonKapat);
    Button hesaplaButon = (Button) findViewById(R.id.islemButonHesapla);
    Button ayarlarButon = (Button) findViewById(R.id.islemButonAyarlar);

    final EditText ders1Vize = (EditText) findViewById(R.id.ders1Vize);
    final EditText ders1Final = (EditText) findViewById(R.id.ders1Final);
    final EditText ders1Ortalama = (EditText) findViewById(R.id.ders1Ortalama);

    //

    final EditText ders2Vize = (EditText) findViewById(R.id.ders2Vize);
    final EditText ders2Final = (EditText) findViewById(R.id.ders2Final);
    final EditText ders2Ortalama = (EditText) findViewById(R.id.ders2Ortalama);
    //
    final EditText ders3Vize = (EditText) findViewById(R.id.ders3Vize);
    final EditText ders3Final = (EditText) findViewById(R.id.ders3Final);
    final EditText ders3Ortalama = (EditText) findViewById(R.id.ders3Ortalama);
    //
    final EditText ders4Vize = (EditText) findViewById(R.id.ders4Vize);
    final EditText ders4Final = (EditText) findViewById(R.id.ders4Final);
    final EditText ders4Ortalama = (EditText) findViewById(R.id.ders4Ortalama);
    //
    final EditText ders5Vize = (EditText) findViewById(R.id.ders5Vize);
    final EditText ders5Final = (EditText) findViewById(R.id.ders5Final);
    final EditText ders5Ortalama = (EditText) findViewById(R.id.ders5Ortalama);
    //
    final EditText ders6Vize = (EditText) findViewById(R.id.ders6Vize);
    final EditText ders6Final = (EditText) findViewById(R.id.ders6Final);
    final EditText ders6Ortalama = (EditText) findViewById(R.id.ders6Ortalama);
    //
    final EditText ders7Vize = (EditText) findViewById(R.id.ders7Vize);
    final EditText ders7Final = (EditText) findViewById(R.id.ders7Final);
    final EditText ders7Ortalama = (EditText) findViewById(R.id.ders7Ortalama);
    //

    /*
     * 
     * 
     * */

    kapatButon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // kapatma islemi
            Toast.makeText(getApplicationContext(), "kapat",
                    Toast.LENGTH_LONG).show();
        }
    });
    /*
     * 
     * 
     * */
    hesaplaButon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // hesap islemi

            int d1v = Integer.parseInt(ders1Vize.getText().toString());
            int d1f = Integer.parseInt(ders1Final.getText().toString());
            int ort1 = (int) (d1v * 0.4 + d1f * 0.6);
            ders1Ortalama.setText("" + ort1);
            //
            int d2v = Integer.parseInt(ders2Vize.getText().toString());
            int d2f = Integer.parseInt(ders2Final.getText().toString());
            int ort2 = (int) (d2v * 0.4 + d2f * 0.6);
            ders2Ortalama.setText("" + ort2);
            //
            int d3v = Integer.parseInt(ders3Vize.getText().toString());
            int d3f = Integer.parseInt(ders3Final.getText().toString());
            int ort3 = (int) (d3v * 0.4 + d3f * 0.6);
            ders3Ortalama.setText("" + ort3);
            //
            int d4v = Integer.parseInt(ders4Vize.getText().toString());
            int d4f = Integer.parseInt(ders4Final.getText().toString());
            int ort4 = (int) (d4v * 0.4 + d4f * 0.6);
            ders4Ortalama.setText("" + ort4);
            //
            int d5v = Integer.parseInt(ders5Vize.getText().toString());
            int d5f = Integer.parseInt(ders5Final.getText().toString());
            int ort5 = (int) (d5v * 0.4 + d5f * 0.6);
            ders5Ortalama.setText("" + ort5);
            //
            int d6v = Integer.parseInt(ders6Vize.getText().toString());
            int d6f = Integer.parseInt(ders6Final.getText().toString());
            int ort6 = (int) (d6v * 0.4 + d6f * 0.6);
            ders6Ortalama.setText("" + ort6);
            //
            int d7v = Integer.parseInt(ders7Vize.getText().toString());
            int d7f = Integer.parseInt(ders7Final.getText().toString());
            int ort7 = (int) (d7v * 0.4 + d7f * 0.6);
            ders7Ortalama.setText("" + ort7);
            //




            Toast.makeText(getApplicationContext(), "hesapla",
                    Toast.LENGTH_LONG).show();
        }
    });
salihzekicamurcu
fuente