Autore Topic: Passaggio dati da EditText e Spinner a String  (Letto 1178 volte)

Offline mangusto

  • Utente normale
  • ***
  • Post: 152
  • Respect: +5
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    ZTE Blade
  • Play Store ID:
    Leonardo Preti
  • Sistema operativo:
    Windows 7
Passaggio dati da EditText e Spinner a String
« il: 28 Maggio 2011, 20:50:43 CEST »
0
Ho creato un xml che contiene alcuni EditText e Spinner che permettono all'utente di scrivere alcune infomrazioni e vorrei leggerle. Avevo pensato ad un codice del tipo
Codice (Java): [Seleziona]
final EditText edit_nome = (EditText) findViewById(R.id.EditTextNome);
final String str_nome = edit_nome.getText().toString();
Che però passa solo stringhe vuote, benchè io compi i campi. Dove sbaglio?

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:Passaggio dati da EditText e Spinner a String
« Risposta #1 il: 29 Maggio 2011, 04:22:25 CEST »
0
Servirebbe un po' di codice in più...  :-\
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline mangusto

  • Utente normale
  • ***
  • Post: 152
  • Respect: +5
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    ZTE Blade
  • Play Store ID:
    Leonardo Preti
  • Sistema operativo:
    Windows 7
Re:Passaggio dati da EditText e Spinner a String
« Risposta #2 il: 29 Maggio 2011, 12:17:03 CEST »
0
Non so quanto possa servire, comunque questo è tutto il codice Java
Codice (Java): [Seleziona]
package it.mangusto.fork;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class EmailForm extends Activity{
        TextView topText;
       
        @Override
        public void onCreate(Bundle savedInstanceState){
                super.onCreate(savedInstanceState);
                setContentView(R.layout.form);
       
        final EditText edit_nome = (EditText) findViewById(R.id.EditTextNome);
                final String str_nome = edit_nome.getText().toString();
               
                final EditText edit_email = (EditText) findViewById(R.id.EditTextEmail);
                final String str_email = edit_email.getText().toString();
               
                final Spinner spin_categoria = (Spinner) findViewById(R.id.SpinnerTipoCibo);
                final String str_categoria = spin_categoria.getSelectedItem().toString();
               
                final EditText edit_titolo = (EditText) findViewById(R.id.EditTextTitolo);
                final String str_titolo = edit_titolo.getText().toString();
               
                final Spinner spin_difficolta = (Spinner) findViewById(R.id.SpinnerDifficolta);
                String str_difficolta = spin_difficolta.getSelectedItem().toString();
               
                final EditText edit_persone = (EditText) findViewById(R.id.EditTextPersone);
                final String str_persone = edit_persone.getText().toString();
               
                final EditText edit_ingredienti = (EditText) findViewById(R.id.EditTextIngredienti);
                final String str_ingredienti = edit_ingredienti.getText().toString();
               
                final EditText edit_vino = (EditText) findViewById(R.id.EditTextVino);
                String str_vino = edit_vino.getText().toString();
               
                final EditText edit_consigli = (EditText) findViewById(R.id.EditTextConsigli);
                String str_consigli = edit_consigli.getText().toString();
               
                final EditText edit_preparazione = (EditText) findViewById(R.id.EditTextPreparazione);
                final String str_preparazione = edit_preparazione.getText().toString();
               
                final String messaggio = String.format(str_nome, str_email, str_categoria, str_titolo, str_titolo, str_difficolta, str_persone, str_ingredienti, str_vino, str_consigli, str_preparazione);
               
                final Button btn_invio = (Button) findViewById(R.id.ButtonInvia);
                btn_invio.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                int c = 0;
                                if(str_nome.length()==0) {
                                        btn_invio.setText(str_nome);
                                        //Toast.makeText(getApplicationContext(), "Il campo \"nome\" è obbligatorio!", Toast.LENGTH_SHORT).show();
                                        c++;
                                }
                                if(str_email.length()==0) {
                                        Toast.makeText(getApplicationContext(), "Il campo \"email\" è obbligatorio!", Toast.LENGTH_SHORT).show();
                                        c++;
                                }
                                if(str_titolo.length()==0) {
                                        Toast.makeText(getApplicationContext(), "Il campo \"titolo\" è obbligatorio!", Toast.LENGTH_SHORT).show();
                                        c++;
                                }
                                if(str_persone.length()==0) {
                                        Toast.makeText(getApplicationContext(), "Il campo \"persone\" è obbligatorio!", Toast.LENGTH_SHORT).show();
                                        c++;
                                }
                                if(str_ingredienti.length()==0) {
                                        Toast.makeText(getApplicationContext(), "Il campo \"ingredienti\" è obbligatorio!", Toast.LENGTH_SHORT).show();
                                        c++;
                                }
                                if(str_preparazione.length()==0) {
                                        Toast.makeText(getApplicationContext(), "Il campo \"preparazione\" è obbligatorio!", Toast.LENGTH_SHORT).show();
                                        c++;
                                }
                                if(c == 0){
                                        final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                                          emailIntent.setType("plain/text");
                                          emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"ilmangusto@gmail.com"});
                                          emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Nuova ricetta per Ricettario Tascabile");
                                          emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, messaggio);
                                          startActivity(emailIntent);
                                }
                        }
                });
        }              
}
e questo tutto il codice XML
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"
       android:gravity="center">
        <RelativeLayout
                android:background="@drawable/red_shade"
                android:layout_width="fill_parent"
                android:layout_height="35dip"
                android:id="@+id/titoloLayout">
            <TextView
                android:paddingTop="5dip"
                android:textColor="#ffffff"
                android:textStyle="bold"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/text_titolo"
                android:layout_centerVertical="true"
                android:paddingLeft="10dip"
                android:text="Titolo">
            </TextView>
        </RelativeLayout>
        <LinearLayout
                android:layout_width="fill_parent"
                android:orientation="vertical"
                android:id="@+id/middleLayout"
                android:layout_weight="1"
                android:layout_height="fill_parent"
                android:paddingTop="5dip">
               <ScrollView
                        android:layout_width="fill_parent"
                        android:id="@+id/formLayout"
                        android:layout_height="fill_parent">
                        <LinearLayout
                        android:layout_width="fill_parent"
                        android:orientation="vertical"
                        android:id="@+id/scrollLayout"
                        android:layout_weight="1"
                        android:layout_height="fill_parent">
                        <EditText
                                android:hint="Il tuo nome"
                                android:id="@+id/EditTextNome"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content">
                        </EditText>
                        <EditText
                                android:hint="La tua email"
                                android:id="@+id/EditTextEmail"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content">
                        </EditText>
                        <Spinner
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                                android:id="@+id/SpinnerTipoCibo"
                                                android:prompt="@string/tipocibo"
                                                android:entries="@array/arr_categorie">
                                        </Spinner>
                        <EditText
                                android:id="@+id/EditTextTitolo"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="Titolo della ricetta">
                        </EditText>
                        <Spinner
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:id="@+id/SpinnerDifficolta"
                                android:prompt="@string/difficolta"
                                android:entries="@array/arr_difficolta">
                        </Spinner>
                        <EditText
                                                android:id="@+id/EditTextTempo"
                                                android:layout_width="match_parent"
                                                android:layout_height="wrap_content"
                                                android:hint="Tempo di preparazione">
                                        </EditText>
                        <EditText
                                android:id="@+id/EditTextPersone"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="Numero di persone">
                        </EditText>
                        <EditText
                                android:id="@+id/EditTextIngredienti"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="Lista degli ingredienti"                  
                                                android:lines="5">
                        </EditText>
                        <EditText
                                android:id="@+id/EditTextVino"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="Vino consigliato">
                        </EditText>
                        <EditText
                                android:id="@+id/EditTextConsigli"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="Consigli di preparazione">
                        </EditText>
                        <EditText
                                android:id="@+id/EditTextPreparazione"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="Preparazione della ricetta"                      
                                                android:lines="5">
                        </EditText>
                        </LinearLayout>
                        </ScrollView>
        </LinearLayout>
        <LinearLayout
                        android:id="@+id/LinearLayout03"
                        android:layout_height="wrap_content"
                        android:layout_width="fill_parent"
                        android:gravity="center"
                        style="@android:style/ButtonBar">
                <Button
                        android:text="Invia Email"
                        android:id="@+id/ButtonInvia"                  
           android:onClick="inviaEmail"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content">
                </Button>
        </LinearLayout>
</LinearLayout>

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:Passaggio dati da EditText e Spinner a String
« Risposta #3 il: 29 Maggio 2011, 14:43:25 CEST »
+1
Il testo inserito nelle EditBox non lo devi prelevare alla CREAZIONE dell'activity perché sarebbe sempre ed automaticamente una stringa vuota ("")! Dovresti invece fare così:

Codice (Java): [Seleziona]
package it.mangusto.fork;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class EmailForm extends Activity{
        TextView topText;
       
        @Override
        public void onCreate(Bundle savedInstanceState){
                super.onCreate(savedInstanceState);
                setContentView(R.layout.form);
       
                EditText edit_nome = (EditText) findViewById(R.id.EditTextNome);
                // tutti gli altri findViewById()
               
                final Button btn_invio = (Button) findViewById(R.id.ButtonInvia);
                btn_invio.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                  miaFunzione(); //Così eviti tutta la serie di final :)
                        });
        }

        private void miaFunzione() {
                    String nome = edit_nome.getText().toString();
                    // dichiari le altre string prelevandone il valore dalle EditBox

                    int c = 0;
                    if(str_nome.length()==0) {
                              btn_invio.setText(str_nome);
                              c++;
                    }
                    // altri IF...
        }          
}

Edit: dimenticavo che lo stesso concetto vale per gli Spinner :)
« Ultima modifica: 29 Maggio 2011, 14:48:17 CEST da gGx »
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline mangusto

  • Utente normale
  • ***
  • Post: 152
  • Respect: +5
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    ZTE Blade
  • Play Store ID:
    Leonardo Preti
  • Sistema operativo:
    Windows 7
Re:Passaggio dati da EditText e Spinner a String
« Risposta #4 il: 29 Maggio 2011, 23:02:26 CEST »
0
Grazie dell'aiuto, sono riuscito a far funzionare il form! (anche se le email non mi arrivano, ma questo è un altro problema! 8-) )
+1 per te