2011-02-17 13 views
6

Estoy escribiendo una aplicación de Android simple que tiene un texto de edición y un botón. Hacer clic en el botón debería mostrar un diálogo de alerta con el texto ingresado en el texto de edición. Para eso tengo el siguiente código:Lectura de texto de un EditText en android

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

    Button b=(Button)findViewById(R.id.ok); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Text in edit box: " + txt) 
     .setCancelable(false) 
     .setTitle("Info") 
     .setPositiveButton("Done", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) {} 
    }); 

    final AlertDialog alert = builder.create(); 

    // set click listener on the flag to show the dialog box 
    b.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      EditText et=(EditText)findViewById(R.id.entry); 
      txt=et.getText().toString(); 
      alert.show(); 
     } 
    }); 

} 

El código anterior se ejecuta bien, pero el diálogo de alerta muestra texto en el cuadro de edición: null .Se debe mostrar el texto del cuadro de edición.

Respuesta

3

El tiempo de la declaración

builder.setMessage("Text in edit box: " + txt) 

consiguió ejecutado txt variable tiene nula en ella. esta es la razón

Intenta que esta sentencia se ejecute después de hacer clic en el botón. Será 100% seguro eliminar el problema

1

Dado que crea la alerta, el texto que en alerta es nulo, cuando hace clic en el botón muestra la alerta cuyo texto es nulo, debe enviar la alerta después de hacer clic en botón

+1

No le parece que debe votar la respuesta si alguien ya lo publicó. en lugar de publicar una respuesta seprate. Chicos hacen de esta comunidad un beneficio para todos en lugar de hacer un mercado de pescado – Javanator

6

escribir esta línea en el exterior del botón de clic

EditText et=(EditText)findViewById(R.id.entry); 
txt=et.getText().toString(); 
1
Use as following: 

    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      Button b = (Button) findViewById(R.id.button1); 


      builder = new AlertDialog.Builder(this); 

      b.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        EditText et = (EditText) findViewById(R.id.editText1); 
        txt = et.getText().toString(); 
        builder.setMessage("Text in edit box: " + txt) 
        .setCancelable(false) 
        .setTitle("Info") 
        .setPositiveButton("Done", 
          new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
         } 
        }); 
        final AlertDialog alert = builder.create(); 
        alert.show(); 
       } 
      }); 

     } 
Cuestiones relacionadas