Autore Topic: Passaggio dati tra Activity ad Activity  (Letto 786 volte)

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Passaggio dati tra Activity ad Activity
« il: 30 Maggio 2016, 21:15:25 CEST »
0
Buonasera a tutti,
premetto che non ho molta esperienza ed è per questo che cerco aiuto.
La mia applicazione crea e riempie un database all'avvio con le credenziali degli utenti, all'inserimento dei dati di login e accesso volevo che sulla seconda Activity venisse visualizzato il nome della persona che ha effettuato l'accesso. Ho utilizzato gli intent.puExtra, ma all'avvio della seconda Activity mi da errore, senza gli intent accede normalmente.

Codice (Java): [Seleziona]
//Lettura nel Database della presenza del CID
                    verifica_cid = CID.getText().toString();
                    databaseCreate = new DatabaseCreate(ctx);
                    db = databaseCreate.getReadableDatabase();
                    Cursor cursor = databaseCreate.ricercaCID(db, verifica_cid);
                    if(cursor.moveToFirst()) {
                        nome = cursor.getString(cursor.getColumnIndexOrThrow(Database.DatiDatabase.Colonna_Nome));
                        cognome = cursor.getString(cursor.getColumnIndexOrThrow(Database.DatiDatabase.Colonna_Cognome));
                        e_mail = cursor.getString(cursor.getColumnIndexOrThrow(Database.DatiDatabase.Colonna_email));
                        Toast.makeText(getBaseContext(), "Benvenuto " + nome + " " + cognome, Toast.LENGTH_LONG).show();
                        db.close();
                        Intent intent = new Intent(ctx, AccessoActivity.class);
                        intent.putExtra("pass_nome" + getPackageName(), nome);
                        startActivity(intent);
                        finish();
                    }

Seconda Activity

Codice (Java): [Seleziona]
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_accesso);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        NOME = (TextView) findViewById(R.id.Nome);
        COGNOME = (TextView) findViewById(R.id.Cognome);
        E_MAIL = (TextView) findViewById(R.id.e_mail);

       
        Intent intent = getIntent();
        pass_nome = intent.getStringExtra("pass_nome" + getPackageName());
        NOME.setText(pass_nome);

LogCat
Codice: [Seleziona]
05-30 19:11:35.553 2334-2334/com.example.sebastiano.apppadovadatabase E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                        Process: com.example.sebastiano.apppadovadatabase, PID: 2334
                                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sebastiano.apppadovadatabase/com.example.sebastiano.apppadovadatabase.AccessoActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2622)
                                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2683)
                                                                                            at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440)
                                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                            at android.os.Looper.loop(Looper.java:148)
                                                                                            at android.app.ActivityThread.main(ActivityThread.java:6066)
                                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:770)
                                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:660)
                                                                                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                                                            at com.example.sebastiano.apppadovadatabase.AccessoActivity.onCreate(AccessoActivity.java:38)
                                                                                            at android.app.Activity.performCreate(Activity.java:6584)
                                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2575)
                                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2683) 
                                                                                            at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) 
                                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                            at android.os.Looper.loop(Looper.java:148) 
                                                                                            at android.app.ActivityThread.main(ActivityThread.java:6066) 
                                                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:770) 
                                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:660) 

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Passaggio dati tra Activity ad Activity
« Risposta #1 il: 31 Maggio 2016, 10:10:17 CEST »
0
Il problema potrebbe risiedere nel TextView non inizializzato, verifica che in R.layout.activity_accesso ci sia il TextView R.id.Nome.
Consiglio: scrivi nel logcat lo stato delle variabili in gioco, chiarisce meglio chi e cosa è in errore, per esempio:
Codice (Java): [Seleziona]
Log.d("AccessoActivity","pass_nome: " + pass_nome + " - NOME: " + NOME);Ciao,
Marco
Se sbaglio, correggetemi.

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #2 il: 31 Maggio 2016, 18:20:02 CEST »
0
Ciao, nel codice della seconda Activity che ho inserito nel post la TextView è inizializzata, o sbaglio?

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Passaggio dati tra Activity ad Activity
« Risposta #3 il: 31 Maggio 2016, 18:22:13 CEST »
0
A codice sembra di sì, non hai postato l'XML del layout, il problema potrebbe essere lì.
Se sbaglio, correggetemi.

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #4 il: 31 Maggio 2016, 18:26:26 CEST »
0
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="@dimen/nav_header_height"
   android:background="@drawable/side_nav_bar"
   android:gravity="bottom"
   android:orientation="vertical"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView
       android:id="@+id/imageView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:paddingTop="@dimen/nav_header_vertical_spacing"
       android:src="@android:drawable/sym_def_app_icon" />

    <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:paddingTop="@dimen/nav_header_vertical_spacing"
       android:hint="Nome"
       android:id="@+id/Nome"
       android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:textAppearance="?android:attr/textAppearanceSmall"
       android:hint="Cognome"
       android:id="@+id/Cognome" />

    <TextView
       android:id="@+id/e_mail"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:hint="e-mail" />

</LinearLayout>

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Passaggio dati tra Activity ad Activity
« Risposta #5 il: 31 Maggio 2016, 18:29:23 CEST »
0
Sembra tutto in ordine. Sarebbe utile vedere nel logcat il contenuto delle variabili pass_nome e NOME o più semplicemente utilizzare il debug inserendo un breakpoint prima dell'errore.
Se sbaglio, correggetemi.

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #6 il: 31 Maggio 2016, 18:30:55 CEST »
0
Potrebbe essere perché uso una "Navigation Drawer Activity"?

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Passaggio dati tra Activity ad Activity
« Risposta #7 il: 31 Maggio 2016, 18:35:37 CEST »
0
Non sono così esperto per risponderti con certezza, quando succede a me vado a tentativi escludendo le possibili cause, sempre dopo aver controllato chi causa il problema; nel tuo caso verificherei se il null è la mancata inizializzazione della TextView (come sospetto) o la lettura della stringa dall'Intent.
Se sbaglio, correggetemi.

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #8 il: 31 Maggio 2016, 18:42:49 CEST »
0
Come devo fare per fare il debug ed inserire un breakpoint prima dell'errore?

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Passaggio dati tra Activity ad Activity
« Risposta #9 il: 31 Maggio 2016, 18:58:25 CEST »
0
Se usi Android Studio, clicca sul bordo della finestra che contiene il codice, all'altezza della riga dove vuoi che l'esecuzione si fermi, appare un cerchio rosso che è il breakpoint.
Per avviare il debug premi sull'icona con l'insetto (bug per l'appunto). Ti allego screenshot, spero si veda.
Nella parte inferiore, una volta che il debug è avviato, appare il debugger dove puoi verificare gli oggetti e il loro contenuto.
Ti consiglio di studiare un po' l'IDE che stai utilizzando perché è fondamentale e aiuta moltissimo.
Se sbaglio, correggetemi.

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #10 il: 31 Maggio 2016, 19:13:57 CEST »
0
Ho fatto il Debug

« Ultima modifica: 31 Maggio 2016, 19:21:14 CEST da SF »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Passaggio dati tra Activity ad Activity
« Risposta #11 il: 01 Giugno 2016, 08:35:40 CEST »
0
TextView NOME è nulla

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #12 il: 01 Giugno 2016, 12:16:51 CEST »
0
Non ne riesco a venire a capo...

Offline SF

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2Laser
  • Sistema operativo:
    Windows 7
Re:Passaggio dati tra Activity ad Activity
« Risposta #13 il: 25 Settembre 2016, 18:47:19 CEST »
0
L'errore potrebbe essere causato dal fatto che i campi "nome", "cognome" ed "e-mail" vengono a trovarsi all'interno di una navigationView
e quindi devono essere richiamati all'interno di essa?

Codice (Java): [Seleziona]
public class AccessoActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    TextView NOME, COGNOME, E_MAIL;
    String pass_nome;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_accesso);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        COGNOME = (TextView) findViewById(R.id.pass_Cognome);
        E_MAIL = (TextView) findViewById(R.id.pass_E_mail);
        NOME = (TextView) findViewById(R.id.pass_Nome);

        pass_nome = getIntent().getExtras().getString("pass_nome" + getPackageName());

        NOME.setText(pass_nome);

        Log.d("AccessoActivity", "pass_name: " + pass_nome + " - nome: " + NOME);


Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Passaggio dati tra Activity ad Activity
« Risposta #14 il: 25 Settembre 2016, 20:12:24 CEST »
0
Se il log del crash è rimasto quello che hai postato all'inizio del post ( chiedo perché è passato un po' di tempo e magari il problema che riscontri è un altro )
vuol dire che il layout activity_accesso che setti come ContentView della seconda activity
Codice (Java): [Seleziona]
setContentView(R.layout.activity_accesso);non contiene la TextView con id "Nome".
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻