Autore Topic: passaggio dati fra activity  (Letto 908 volte)

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
passaggio dati fra activity
« il: 29 Settembre 2014, 12:48:18 CEST »
0
non mi riesce di passare dati prelevati da una activity con estensione ListActivity verso una activity con estensione Activity.
vi posto i codici della activity mittente lista:
Codice (Java): [Seleziona]
public class lista extends ListActivity
{
    private CursorAdapter adapter = null;  
    private DbAdapter db = new DbAdapter(this);
    private AdapterView<CursorAdapter> listView;

    private TextView txt_PRZ;
    private TextView txt_DAT;
    private TextView txt_SUP;
    private TextView txt_BAL;
    private TextView txt_IMP;
    private TextView txt_SER;
    private TextView txt_STM;
    private TextView txt_LIV;
    private TextView txt_BOX;
    private TextView txt_CAN;
    private TextView txt_CEN;
    private TextView txt_PAN;
    private Button invia_1;
    private Button invia_2;
    private Button invia_3;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         
       
        adapter = new CursorAdapter(this, (Cursor) db.getAnagrafica(), false)    
        {
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup viewGroup)  
            {
                View v = LayoutInflater.from(context).inflate(R.layout.lista_r, null);
                return v;
            }
            @Override
            public void bindView(View view, Context context, Cursor cursor)    
            {                                                                  
                TextView txt = (TextView) view.findViewById(R.id.txt_via);    
                txt.setText(cursor.getString(cursor.getColumnIndex("via")));
                txt = (TextView) view.findViewById(R.id.txt_numero);
                txt.setText(cursor.getString(cursor.getColumnIndex("numero")));
                txt = (TextView) view.findViewById(R.id.txt_comune);
                txt.setText(cursor.getString(cursor.getColumnIndex("comune")));
                txt = (TextView) view.findViewById(R.id.txt_venditore);
                txt.setText(cursor.getString(cursor.getColumnIndex("venditore")));
                txt = (TextView) view.findViewById(R.id.txt_acquirente);
                txt.setText(cursor.getString(cursor.getColumnIndex("acquirente")));
                txt = (TextView) view.findViewById(R.id.txt_notaio);
                txt.setText(cursor.getString(cursor.getColumnIndex("notaio")));
                txt = (TextView) view.findViewById(R.id.txt_data);
                txt.setText(cursor.getString(cursor.getColumnIndex("data")));
                txt = (TextView) view.findViewById(R.id.txt_foglio);
                txt.setText(cursor.getString(cursor.getColumnIndex("foglio")));
                txt = (TextView) view.findViewById(R.id.txt_particella);
                txt.setText(cursor.getString(cursor.getColumnIndex("particella")));
                txt = (TextView) view.findViewById(R.id.txt_sub);
                txt.setText(cursor.getString(cursor.getColumnIndex("sub")));
                txt = (TextView) view.findViewById(R.id.txt_PRZ);
                txt.setText(cursor.getString(cursor.getColumnIndex("PRZ")));
                txt = (TextView) view.findViewById(R.id.txt_DAT);
                txt.setText(cursor.getString(cursor.getColumnIndex("DAT")));
                txt = (TextView) view.findViewById(R.id.txt_SUP);
                txt.setText(cursor.getString(cursor.getColumnIndex("SUP")));
                txt = (TextView) view.findViewById(R.id.txt_BAL);
                txt.setText(cursor.getString(cursor.getColumnIndex("BAL")));
                txt = (TextView) view.findViewById(R.id.txt_IMP);
                txt.setText(cursor.getString(cursor.getColumnIndex("IMP")));
                txt = (TextView) view.findViewById(R.id.txt_SER);
                txt.setText(cursor.getString(cursor.getColumnIndex("SER")));
                txt = (TextView) view.findViewById(R.id.txt_STM);
                txt.setText(cursor.getString(cursor.getColumnIndex("STM")));
                txt = (TextView) view.findViewById(R.id.txt_LIV);
                txt.setText(cursor.getString(cursor.getColumnIndex("LIV")));
                txt = (TextView) view.findViewById(R.id.txt_BOX);
                txt.setText(cursor.getString(cursor.getColumnIndex("BOX")));
                txt = (TextView) view.findViewById(R.id.txt_CAN);
                txt.setText(cursor.getString(cursor.getColumnIndex("CAN")));
                txt = (TextView) view.findViewById(R.id.txt_CEN);
                txt.setText(cursor.getString(cursor.getColumnIndex("CEN")));
                txt = (TextView) view.findViewById(R.id.txt_PAN);
                txt.setText(cursor.getString(cursor.getColumnIndex("PAN")));
                txt = (TextView) view.findViewById(R.id.txt_soffitta);
                txt.setText(cursor.getString(cursor.getColumnIndex("soffitta")));
                txt = (TextView) view.findViewById(R.id.txt_terrazzo);
                txt.setText(cursor.getString(cursor.getColumnIndex("terrazzo")));
            }
        };
        getListView().setAdapter(adapter);
        registerForContextMenu(getListView());



            // bottone  per inviare comparabile ad activity imputdati
            View.OnClickListener inviaListener = new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    //metodo putString per passaggio dati tra activity
                    Intent i = new Intent(getApplicationContext(), imputdati.class);
                    Bundle b = new Bundle();
                    b.putString("PRZ", txt_PRZ.getText().toString());
                    b.putString("DAT", txt_DAT.getText().toString());
                    b.putString("SUP", txt_SUP.getText().toString());
                    b.putString("BAL", txt_BAL.getText().toString());
                    b.putString("IMP", txt_IMP.getText().toString());
                    b.putString("SER", txt_SER.getText().toString());
                    b.putString("STM", txt_STM.getText().toString());
                    b.putString("LIV", txt_LIV.getText().toString());
                    b.putString("BOX", txt_BOX.getText().toString());
                    b.putString("CAN", txt_CAN.getText().toString());
                    b.putString("CEN", txt_CEN.getText().toString());
                    b.putString("PAN", txt_PAN.getText().toString());
                    i.putExtras(b);
                    startActivity(i);
                }
            };
 
            txt_PRZ = (TextView) findViewById(R.id.txt_PRZ);
            txt_DAT = (TextView) findViewById(R.id.txt_DAT);
            txt_SUP = (TextView) findViewById(R.id.txt_SUP);
            txt_BAL = (TextView) findViewById(R.id.txt_BAL);
            txt_IMP = (TextView) findViewById(R.id.txt_IMP);
            txt_SER = (TextView) findViewById(R.id.txt_SER);
            txt_STM = (TextView) findViewById(R.id.txt_STM);
            txt_LIV = (TextView) findViewById(R.id.txt_LIV);
            txt_BOX = (TextView) findViewById(R.id.txt_BOX);
            txt_CAN = (TextView) findViewById(R.id.txt_CAN);
            txt_CEN = (TextView) findViewById(R.id.txt_CEN);
            txt_PAN = (TextView) findViewById(R.id.txt_PAN);
            invia_1 = (Button) findViewById(R.id.invia_1);
            invia_1.setOnClickListener(inviaListener);
        }  
}
codici della activity ricevente imputdati:
Codice (Java): [Seleziona]
public class imputdati extends Activity {
//variabili occorrenti al passaggio dei dati da lista a imputdati
    private TextView txt_PRZ;
    private TextView txt_DAT;
    private TextView txt_SUP;
    private TextView txt_BAL;
    private TextView txt_IMP;
    private TextView txt_SER;
    private TextView txt_STM;
    private TextView txt_LIV;
    private TextView txt_BOX;
    private TextView txt_CAN;
    private TextView txt_CEN;
    private TextView txt_PAN;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        setContentView(R.layout.imputdati);
                   
        txt_PRZ = (TextView) findViewById(R.id.txt_PRZ1);
        txt_DAT = (TextView) findViewById(R.id.txt_DAT1);
        txt_SUP = (TextView) findViewById(R.id.txt_SUP1);
        txt_BAL = (TextView) findViewById(R.id.txt_BAL1);
        txt_IMP = (TextView) findViewById(R.id.txt_IMP1);
        txt_SER = (TextView) findViewById(R.id.txt_SER1);
        txt_STM = (TextView) findViewById(R.id.txt_STM1);
        txt_LIV = (TextView) findViewById(R.id.txt_LIV1);
        txt_BOX = (TextView) findViewById(R.id.txt_BOX1);
        txt_CAN = (TextView) findViewById(R.id.txt_CAN1);
        txt_CEN = (TextView) findViewById(R.id.txt_CEN1);
        txt_PAN = (TextView) findViewById(R.id.txt_PAN1);

        Intent i = getIntent();
        Bundle b = i.getExtras();

        txt_PRZ.setText(b.getString("PRZ"));
        txt_DAT.setText(b.getString("DAT"));
        txt_SUP.setText(b.getString("SUP"));
        txt_BAL.setText(b.getString("BAL"));
        txt_IMP.setText(b.getString("IMP"));
        txt_SER.setText(b.getString("SER"));
        txt_STM.setText(b.getString("STM"));
        txt_LIV.setText(b.getString("LIV"));
        txt_BOX.setText(b.getString("BOX"));
        txt_CAN.setText(b.getString("CAN"));
        txt_CEN.setText(b.getString("CEN"));
        txt_PAN.setText(b.getString("PAN"));
ho lavorato su un tutorial che estendeva entrambe le classi Activity e funziona perfettamente, i dati vengono trasferiti.
credo pertanto che il problema sia nell'estensione della prima classe (ListActivity)
se però estendo Activity la classe mittente lista non legge più i dati dal db e non trasferisce nulla perchè la lista risulta vuota.
spero di essere stato chiaro e resto in attesa di aiuto.
PS
il Logcat segnala

Codice (Java): [Seleziona]
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mca5.app/com.mca5.app.lista}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.mca5.app.lista.onCreate(lista.java:151)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:passaggio dati fra activity
« Risposta #1 il: 29 Settembre 2014, 12:58:06 CEST »
+1
Citazione
Caused by: java.lang.NullPointerException
            at com.mca5.app.lista.onCreate(lista.java:151)

Riga 151 di lista.java
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #2 il: 29 Settembre 2014, 13:10:43 CEST »
0
OK però non so come operare

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:passaggio dati fra activity
« Risposta #3 il: 29 Settembre 2014, 13:34:51 CEST »
+1
OK però non so come operare

Il fatto è che non so qual'è la tua riga 151, perchè non hai copiato tutte le righe così da poter contare le righe.

Almeno indicaci qual'è la riga 151, indovinarla non mi sembra il caso.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #4 il: 29 Settembre 2014, 15:22:46 CEST »
0
chiedo scusa
eccolo
Codice (Java): [Seleziona]
invia_1.setOnClickListener(inviaListener);

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:passaggio dati fra activity
« Risposta #5 il: 29 Settembre 2014, 15:39:35 CEST »
+1
Il messaggio ti sta dicendo che in quella riga uno dei due oggetti è NULL (secondo me invia_1).

Puoi controllare mettendo subito prima una riga con output nel LogCat:
Codice (Java): [Seleziona]
if (invia_1==null) Log.e("TAG","ERRORE : invia_1 è NULL");
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #6 il: 29 Settembre 2014, 16:39:38 CEST »
0
perdonami ma non riesco a eseguire quanto da te suggerito.
la mia ignoranza è ancora, purtroppo, sconfinata.
mi consola che non hai rilevato l'incompatibilità sulle estensioni di classe.


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:passaggio dati fra activity
« Risposta #7 il: 29 Settembre 2014, 16:49:02 CEST »
+1
perdonami ma non riesco a eseguire quanto da te suggerito.
la mia ignoranza è ancora, purtroppo, sconfinata.
mi consola che non hai rilevato l'incompatibilità sulle estensioni di classe.

Dicevo che secondo me questa riga ritorna NULL.

Codice (Java): [Seleziona]
invia_1 = (Button) findViewById(R.id.invia_1);
Sicuro che il Button si chiami invia_1 ?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #8 il: 29 Settembre 2014, 16:54:25 CEST »
0
si, si chiama invia_1

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:passaggio dati fra activity
« Risposta #9 il: 30 Settembre 2014, 00:46:12 CEST »
+1
Sta sfuggendo solo a me, oppure non hai dichiarato l'utilizzo di un layout nella classe lista ?

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #10 il: 30 Settembre 2014, 09:20:43 CEST »
0
La classe lista estende ListActivity

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #11 il: 30 Settembre 2014, 09:28:58 CEST »
0
Grazie a tutti per averla guardata, questo codice l' ho preso da un tutorial però lì si riempivano delle Edit Text nella mittente e si passavano alla ricevente , io l'ho modificata Facendogli leggere i dati da una lista che visualizza dati dal database. L'oggetto che bradi dice  sia null è perché , probabilmente, non  legge correttamente i dati da trasferire
« Ultima modifica: 30 Settembre 2014, 09:32:55 CEST da gaetano_c »

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:passaggio dati fra activity
« Risposta #12 il: 30 Settembre 2014, 09:33:25 CEST »
+1
La classe lista estende ListActivity

Si, questo l'ho capito, però secondo me il tuo pulsante potrebbe essere null perchè non lo riesce a recuperare nella view associata al cursoradapter e non hai dichiarato un layout custom per la listview, in cui magari fa la ricerca di quel id

Offline gaetano_c

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3
  • Sistema operativo:
    Windows 7
Re:passaggio dati fra activity
« Risposta #13 il: 30 Settembre 2014, 09:39:23 CEST »
0
Hai ragione e cosa mi suggerisci?
Mi dici per piacere come dichiarare il layout custom?


Post unito: 30 Settembre 2014, 13:55:14 CEST
nella maniera che posto di seguito avrei già ottenuto di rappresentare i dati del dedatabase in un layout da me costruito,
se però nel layout metto pulsanti o altro, con l'estensione della classe ListActivity addio non funziona piu.
Vorrei pertanto fare lo stesso in una classe con estensione Activity.
non so se è possibile con il CursorAdapter implementando newView e bindView

Codice (Java): [Seleziona]
public class lista extends ListActivity
{
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
adapter = new CursorAdapter(this, (Cursor) db.getAnagrafica(), false)    
        {
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup viewGroup)
            {
                View v = LayoutInflater.from(context).inflate(R.layout.lista_r, null);
                return v;
            }
            @Override
            public void bindView(View view, Context context, Cursor cursor)    
            {                                                                
                TextView txt = (TextView) view.findViewById(R.id.txt_via);    
                txt.setText(cursor.getString(cursor.getColumnIndex("via")));
                txt = (TextView) view.findViewById(R.id.txt_numero);
                txt.setText(cursor.getString(cursor.getColumnIndex("numero")));
                txt = (TextView) view.findViewById(R.id.txt_comune);
                txt.setText(cursor.getString(cursor.getColumnIndex("comune")));
                txt = (TextView) view.findViewById(R.id.txt_venditore);
                txt.setText(cursor.getString(cursor.getColumnIndex("venditore")));
                txt = (TextView) view.findViewById(R.id.txt_acquirente);
                txt.setText(cursor.getString(cursor.getColumnIndex("acquirente")));
            }
        };
        getListView().setAdapter(adapter);
        registerForContextMenu(getListView());
non mi servono codici ma indicazioni per arrivarci da solo
« Ultima modifica: 30 Settembre 2014, 13:55:15 CEST da gaetano_c, Reason: Merged DoublePost »

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:passaggio dati fra activity
« Risposta #14 il: 30 Settembre 2014, 14:26:45 CEST »
+1
Il tipo di adapter che utilizzi è indipendente, basta che in un qualsiasi layout metta una listview, e poi nell'activity invece che fare getListView() dichiari prima un oggetto ListView e poi lo assegni con il classico findViewById. Tutto il resto è identico.