2012-04-27 16 views
25

En mi aplicación tengo una página de editar detalles del usuario y quiero mostrar el nombre actual, dirección de correo electrónico, etc. en los campos editText correspondientes y luego el usuario puede borrar eso e ingresar uno nuevo si ellos quieren.Android - valor predeterminado en editText

¿Hay alguna manera de hacerlo? Gracias por cualquier ayuda

+2

Este sitio es para usted http://developer.android.com/index.html – MKJParekh

Respuesta

28

Puede usar EditText.setText(...) para establecer el texto actual de un campo EditText.

Ejemplo:

yourEditText.setText(currentUserName); 
+0

Esto bloquea mi aplicación.:( – Rishav

33

¿Existe la función hint? Puede usar el setHint() para configurarlo, o configurarlo en XML (aunque probablemente no lo desee, porque el XML no 'conoce' el nombre/dirección de su usuario :))

+2

Gracias por la pista;) Esto es algo para hacer la pista un poco diferente del texto normal: \t \t title.setHint (Html.fromHtml ("" + + DEFAULT_TITLE "")); – MikeL

+0

para configurar la sugerencia en java -> 'inputPhoneNumber.setHint (R.string.examplePhoneNumber);' (gracias Nanne) – tmr

16

Desde el xml:

android:text="yourtext" 
+1

Esto no funciona con TextView (lo intenté con Android api 4.0). – csharpfolk

2

Lo primero que necesita para cargar los datos de usuario de alguna manera

entonces usted necesita para encontrar su EditarTexto si no tiene it-

EditText et = (EditText)findViewById(R.id.youredittext);

después de que haya encontrado su EditarTexto, llame

et.setText(theUserName); 
0

Puede hacerlo de esta manera

private EditText nameEdit; 
private EditText emailEdit; 
private String nameDefaultValue = "Your Name"; 
private String emailDefaultValue = "[email protected]"; 

y en el interior método onCreate

nameEdit = (EditText) findViewById(R.id.name); 
    nameEdit.setText(nameDefaultValue); 
    nameEdit.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (nameEdit.getText().toString().equals(nameDefaultValue)){ 
       nameEdit.setText(""); 
      } 
      return false; 
     } 
    }); 

    nameEdit.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) {    
      if(!hasFocus && TextUtils.isEmpty(nameEdit.getText().toString())){ 
       nameEdit.setText(nameDefaultValue); 
      } else if (hasFocus && nameEdit.getText().toString().equals(nameDefaultValue)){ 
       nameEdit.setText(""); 
      } 
     } 
    });  

    emailEdit = (EditText)findViewById(R.id.email); 
    emailEdit.setText(emailDefaultValue); 
    emailEdit.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) {    
      if(!hasFocus && TextUtils.isEmpty(emailEdit.getText().toString())){ 
       emailEdit.setText(emailDefaultValue); 
      } else if (hasFocus && emailEdit.getText().toString().equals(emailDefaultValue)){ 
       emailEdit.setText(""); 
      } 
     } 
    }); 
+0

Creo que no tiene que agregar el ontouchlistener, puede funcionar solo con el setonfocuschangelistener para ambos campos. – MikeL

11

Puede utilizar el texto propiedad en su archivo xml para campos particulares Edittext. Por ejemplo:

<EditText 
    android:id="@+id/ET_User" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="yourusername"/> 

como esta todos los campos de texto contiene EDITTEXT lo quieres, si el usuario quiere cambiar campo particular EDITTEXT que quitar texto más antiguo e introduzca su nuevo texto.

En Otra forma simplemente que presentamos lo mejor en particular EDITTEXT campo id en la clase de actividad y texto que figura a esa pregunta.

Otra forma mediante programación =

Ejemplo:

EditText username=(EditText)findViewById(R.id.ET_User); 

username.setText("jack");