Autore Topic: Sempre solito valore dell'EditText in un Dialog  (Letto 674 volte)

Offline Fedezzz

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
  • Sistema operativo:
    Windows 7
Sempre solito valore dell'EditText in un Dialog
« il: 20 Gennaio 2012, 13:57:42 CET »
0
Ciao a tutti, mi chiamo Federico e sto imparando la programmazione su Android (tramite la Developer Guide sul sito ufficiale), questo è il mio primo post sul forum.

Ho un problema riguardo il visualizzare il valore di un EditText all'interno di un semplice Dialog, una cosa banale sicuramente per molti di voi...
Il problema sta nel fatto che dato un EditText ed un Button, quando click sul bottone mi si apre un AlertDialog nel quale attraverso il metodo setMessage() visualizzo il valore digitato dentro l'EditText, ok, però solo il primo dei valori memorizzato, nel senso che se chiudo il dialog, modifico l'EditText e riclicco sul bottone mi compare sempre il vecchio valore, non capisco perchè.

Vi riporto il codice:
Codice (Java): [Seleziona]
package myapplication.mostradialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.util.Log;
import android.view.View;
import android.view.View.*;
import android.os.Bundle;
import android.widget.*;

public class MostraDialogActivity extends Activity {
       
        /**
         * COSTANTI
         */

        static final private  int DIALOG_SALUTO = 1;
       
        /**
         * WIDGETS
         */

        private Button btn_salutami;
        private EditText edittext_nomecognome;
       
        /**
         * METODI
         */

       
    @Override
    public void onCreate(Bundle savedInstanceState) {
               
        /* Chiamo il metodo base nella classe padre */
        super.onCreate(savedInstanceState);
       
         /* Mostro l'Activity */
        setContentView(R.layout.main);
       
        /* Inizializzo i Widgets */
        btn_salutami =             (Button)   findViewById(R.id.button_salutami);
        edittext_nomecognome = (EditText) findViewById(R.id.text_nomecognome);
       
        /* Attacco un listener al bottone per gestire l'evento click */        
        btn_salutami.setOnClickListener(
                        new OnClickListener() {
                                public void onClick(View v) {
                                        Log.v("EditText",  "edittext_nomecognome : " + edittext_nomecognome.getText().toString());
                                        showDialog(DIALOG_SALUTO);
                                }
                        }
        );
    }
       
    @Override
    protected Dialog onCreateDialog(int id) {
               
        switch(id) {
                case DIALOG_SALUTO :
                        return new AlertDialog.Builder(MostraDialogActivity.this)
                        .setTitle("Informazione")
                        .setMessage("Benvenuto "+ edittext_nomecognome.getText().toString() + "!")
                .setPositiveButton(
                                "Chiudi"
                                ,
                                new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dialog, int whichButton) {
                                                        Toast.makeText(getApplicationContext(), "Hai appena chiuso il dialog", Toast.LENGTH_SHORT).show();
                                                        dialog.dismiss();
                                                }
                                })
                .create();
        }
        return null;
    }

}

il main.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

    <TextView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text="Come ti chiami?" />

    <EditText
       android:id="@+id/text_nomecognome"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:inputType="textPersonName" >

        <requestFocus />
    </EditText>

    <Button
       android:id="@+id/button_salutami"
       android:layout_width="120dp"
       android:layout_height="wrap_content"
       android:layout_gravity="right"
       android:text="Salutami!" />

</LinearLayout>

Magari è una cavolata... attraverso Log.v() noto che effettivamente i valori dell'EditText cambiano.


Potresti darmi qualche dritta? Grazie anticipatamente!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Sempre solito valore dell'EditText in un Dialog
« Risposta #1 il: 20 Gennaio 2012, 14:06:59 CET »
0
Devi settare il testo del Dialog all'interno del metodo onPrepareDialog ;)

Offline Fedezzz

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
  • Sistema operativo:
    Windows 7
Re:Sempre solito valore dell'EditText in un Dialog
« Risposta #2 il: 20 Gennaio 2012, 14:59:25 CET »
0
Ottimo ora funziona, grazie mille.

Avrei un'altra domanda... Ho letto nella documentazione delle api che OnPrepareDialog e altre simili sono deprecate in favore di DialogFragment, dove c'è scritto "...this is also available on older platforms through the Android compatibility package."

Significa che senza problemi i Fragment (i cui requisiti leggo API level 11, quindi android 3.0) possono funziona in retro compatibilità anche con la 2.3 per esempio?

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Sempre solito valore dell'EditText in un Dialog
« Risposta #3 il: 20 Gennaio 2012, 19:26:35 CET »
0
Sì, a patto di incorporare nel tuo progetto la libreria del compatibility package.  Mi pare sia in un jar da scaricare dal sito per gli sviluppatori Android.  ;-)