2011-02-17 20 views
6

Piszę prostą aplikację na Androida, która ma edittext i przycisk. Kliknięcie przycisku powinno wyświetlić okno dialogowe z tekstem wpisanym w edytorze tekstu. Do tego mam następujący kod:Czytanie tekstu EditText w Androidzie

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(); 
     } 
    }); 

} 

Powyższy kod działa prawidłowo, ale okno alertu pokazuje tekstu w polu edycji: null .To powinno pokazać tekst polu edycji.

Odpowiedz

3

Czas oświadczenie

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

został wykonany txt zmienna ma wartość null w nim. to jest powód.

Spróbuj uzyskać wykonanie tej instrukcji po kliknięciu przycisku. To będzie 100% na pewno usunąć problem

1

Ponieważ budujesz alert, txt, który w alertu ma wartość null, po kliknięciu przycisku pokaż alert, który dialog txt ma wartość null, powinieneś powiadomić po kliknięciu przycisku przycisk

+1

nie uważasz, że powinieneś głosować w górę odpowiedź jeśli ktoś już pisał go. zamiast tego wysyłając odpowiedź seprate. Faceci sprawiają, że ta społeczność jest korzystna dla wszystkich, a nie tylko dla rynku rybnego – Javanator

6

napisać ten wiersz na zewnątrz przycisku kliknij

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(); 
       } 
      }); 

     } 
Powiązane problemy