Autore Topic: EditText per sovrascrire il nome di un pulsante  (Letto 1460 volte)

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
EditText per sovrascrire il nome di un pulsante
« il: 02 Maggio 2010, 17:39:08 CEST »
0
Buona sera a tutti, posto per chiedere a voi esperti un consiglio.

Il mio intento di oggi è quello di creare una applicazione che permette all'utente di cambiare il nome di un pulsante premendo su di esso.

Ho cosi strutturato il mio programma:

Schermata principale  con pulsante [CAMBIA IL MIO NOME] cliccando sul quale si apre una nuova Activity dove dovrebbe apparire una tastiera che permetta all'utente di inserire il nome del nuovo pulsante (ho gia creato l'Activity che viene visualizzata correttamente senza però la tastiera).

Il mio dubbio però è il seguente:
di defoult il pulsante è definito come
Codice (XML): [Seleziona]
<Button
       android:id="@+id/pulsante_nome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableRight="@drawable/icon"
        android:text="@string/pulsante"
        android:minWidth="180dp"
/>
ma come faccio a sovrascrivere @string/pulsante con il nuovo nome immesso dall'utente?

Ovviamente non pretendo che mi scriviate il codice ma mi bastano anche solo un paio di consigli procedurali.

Grazie
Marco
« Ultima modifica: 15 Maggio 2010, 17:27:45 CEST da JD »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
0
Ciao Marco, se ho ben capito la tua domanda dovresti risolvere utilizzando semplicemente .setText() su pulsante_nome:

Codice (Java): [Seleziona]
public class HelloAndroid extends Activity {
        Button btn_pulsante_nome;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
               
                btn_pulsante_nome = (Button)findViewById(R.id.pulsante_nome);
                btn_pulsante_nome.setOnClickListener(clickListener);
        }
       
        private OnClickListener clickListener = new OnClickListener() {
                public void onClick(View v) {
                        switch (v.getId()) {
                        case R.id.pulsante_nome:
                                btn_pulsante_nome.setText("JD");
                                break;
                        }
                }
        };
}

Il codice che ho postato serve solo a farti capire come modificare il testo del pulsante. Tu dovrai poi gestire la lettura del nome e la restituzione della stringa da utilizzare in setText() all'activity chiamante.

Fammi sapere se è la risposta che cercavi :)

PS
Visto che parli di Applicazione e non di AppWidget sposto nella sezione View e Layout.
« Ultima modifica: 02 Maggio 2010, 19:12:33 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
0
Come al solito grazie mille per la celere e precisa risposta.
E' esattamente quello che cercavo.

Ho fatto una piccola modifica al mio esercizio che adesso consiste in questo:
- Creare una sola activity composta da un campo editabile ed un pulsante, immettendo il nuovo nome nel campo dovrebbe cambiare il nome del pulsante.

Ho scritto questo codice, ma il pulsante dopo il click diventa senza nome (la stringa "s" non viene inizializzata).

Non capisco dove sbaglio :(
Codice (Java): [Seleziona]
public class PulsanteActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Questo comando mi carica la view main (quella principale)
        setContentView(R.layout.main);
       
        //Definisco il pulsante e lo chiamo btn findViewById recupera la View del pulsante dal suo ID
        final Button btn = (Button) findViewById(R.id.pulsanteid);
        btn.setOnClickListener(new View.OnClickListener() {
                       
        //memorizzo quanto digitato in una stringa
        EditText et = (EditText)findViewById(R.id.camponome);
        String s = et.getText().toString();    

                        @Override
                        public void onClick(View view) {
                                switch (view.getId()) {
                case R.id.pulsanteid:
                                //sostituisco il nome Defoult del pulsante con il nome immesso
                        btn.setText(s);
                        break;
                }
                        }
                });
    }
}

Il file XML è cosi grossolanamente impostato:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
       
        <TextView  
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello"
        />

        <EditText
                android:id="@+id/camponome"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:imeOptions="actionSend"
                android:lines="1"
                android:hint="actionSend">
        </EditText>

        <Button
                android:id="@+id/pulsanteid"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="@string/testodelpulsante">
        </Button>
   
</LinearLayout>

Dove sbaglio?  :-\

« Ultima modifica: 04 Maggio 2010, 16:01:26 CEST da JD, Reason: sistemati i tag code »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
0
Ciao MMarko,
ho sistemato il codice, così funziona :).

Codice (Java): [Seleziona]
public class PulsanteActivity extends Activity {

        Button btn;
       
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                //Questo comando mi carica la view main (quella principale)
                setContentView(R.layout.main);

                //Definisco il pulsante e lo chiamo btn findViewById recupera la View del pulsante dal suo ID
                btn = (Button) findViewById(R.id.pulsanteid);
                btn.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View view) {
                                //memorizzo quanto digitato in una stringa
                                EditText et = (EditText)findViewById(R.id.camponome);
                                String s = et.getText().toString();  
                                //sostituisco il nome Defoult del pulsante con il nome immesso
                                btn.setText(s);
                        }
                });
        }
}

PS
Quando inserisci del codice in un post indica anche il tipo di linguaggio, così viene evidenziata la sintassi (per java e xml puoi utilizzare gli appositi pulsanti).
« Ultima modifica: 04 Maggio 2010, 16:26:54 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
0
Che velocità! :D

Grazie mille, mi studio immediatamente le correzioni che hai fatto!

Grazie ancora

PS: infatti ho inserito codice generico e non codice Java per quello non mi evidenzia le parole, sorry :P