Autore Topic: Problema passaggio da una activity ad un'altra  (Letto 948 volte)

Offline teo2490

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Problema passaggio da una activity ad un'altra
« il: 20 Agosto 2012, 11:11:14 CEST »
0
Salve a tutti,
premetto che sono nuovo nel forum e riguardo alla programmazione android, quindi le vostre critiche o consigli sono molto ben accetti.
Stavo provando a sviluppare un'applicazione con due activity e due pulsanti. I pulsanti cambiano il testo in una TextField nella prima activity, ma vorrei che uno dei due mi facesse passare ad un'altra activity.
Il codice della prima è il seguente:
Codice (Java): [Seleziona]
package teo2490.android;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;

public class MainActivity extends Activity {
       
  private TextView textView1;
  private Button bottone1;
  private Button bottone2;
 
 
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   
    //Setta gli oggetti di activity_main.xml
    setContentView(R.layout.activity_main);
   
    //Dichiarazione TextView e Pulsanti
    textView1 = (TextView) findViewById(R.id.testo1);
    textView1.setText("Testo modificato tramite codice 1");
   
    bottone1 = (Button) findViewById(R.id.bottone1);
    bottone2 = (Button) findViewById(R.id.bottone2);
   
    final Intent miaIntent = new Intent(this, SecondaAttivita.class);
   
   
    //Listener per i pulsanti
    View.OnClickListener gestore = new View.OnClickListener() {
          public void onClick(View view) {
           
            switch(view.getId()){
                       
              case R.id.bottone1:
                textView1.setText("E' stato cliccato il bottone 1 !!!!!");
                startActivity(miaIntent);
                break;
                               
              case R.id.bottone2:
                textView1.setText("E' stato cliccato il bottone 2  !!!!!");
                break;
            }  
          }
        };
               
        bottone1.setOnClickListener(gestore);
        bottone2.setOnClickListener(gestore);
  }
}

Mentre quello della seconda è questo:
Codice (Java): [Seleziona]
package teo2490.android;


import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class SecondaAttivita extends Activity {
  private TextView tv; 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    LinearLayout linear = new LinearLayout(this);
      tv.setText("Questa è la seconda activity");    
      linear.addView(tv);
      setContentView(linear);        
  }
}

Quando però clicco sul bottone uno esce un messaggio del tipo "Unfortunately, NOMEAPP has stopped."

Cosa sbaglio?
Grazie mille in anticipo!  :-)

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Problema passaggio da una activity ad un'altra
« Risposta #1 il: 20 Agosto 2012, 11:15:08 CEST »
0
hai dichiarato la seconda activity nel manifest?

ps: posta il logcat, così e' più facile trovare l'errore!  ;-)
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch

Offline teo2490

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Re:Problema passaggio da una activity ad un'altra
« Risposta #2 il: 20 Agosto 2012, 11:18:52 CEST »
0
Il manifest è il seguente:

Codice (XML): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="teo2490.android"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="15" />

    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <activity
           android:name=".MainActivity"
           android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondaAttivita" />
    </application>

</manifest>

Dove ho aggiunto la riga
Codice (XML): [Seleziona]
<activity android:name=".SecondaAttivita" />. E' corretto?

Il logcat invece è il seguente:

08-20 09:18:17.860: E/Trace(727): error opening trace file: No such file or directory (2)
08-20 09:18:18.651: D/gralloc_goldfish(727): Emulator without GPU emulation detected.
08-20 09:18:25.640: D/AndroidRuntime(727): Shutting down VM
08-20 09:18:25.640: W/dalvikvm(727): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
08-20 09:18:25.710: E/AndroidRuntime(727): FATAL EXCEPTION: main
08-20 09:18:25.710: E/AndroidRuntime(727): java.lang.RuntimeException: Unable to start activity ComponentInfo{teo2490.android/teo2490.android.SecondaAttivita}: java.lang.NullPointerException
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.os.Looper.loop(Looper.java:137)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.ActivityThread.main(ActivityThread.java:4745)
08-20 09:18:25.710: E/AndroidRuntime(727):    at java.lang.reflect.Method.invokeNative(Native Method)
08-20 09:18:25.710: E/AndroidRuntime(727):    at java.lang.reflect.Method.invoke(Method.java:511)
08-20 09:18:25.710: E/AndroidRuntime(727):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-20 09:18:25.710: E/AndroidRuntime(727):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-20 09:18:25.710: E/AndroidRuntime(727):    at dalvik.system.NativeStart.main(Native Method)
08-20 09:18:25.710: E/AndroidRuntime(727): Caused by: java.lang.NullPointerException
08-20 09:18:25.710: E/AndroidRuntime(727):    at teo2490.android.SecondaAttivita.onCreate(SecondaAttivita.java:14)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.Activity.performCreate(Activity.java:5008)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-20 09:18:25.710: E/AndroidRuntime(727):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
08-20 09:18:25.710: E/AndroidRuntime(727):    ... 11 more

Spero tu riesca ad aiutarmi! Grazie! :-)

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:Problema passaggio da una activity ad un'altra
« Risposta #3 il: 20 Agosto 2012, 11:20:23 CEST »
0
Cosa c'è alla riga 14 della seconda attività?

Codice: [Seleziona]
08-20 09:18:25.710: E/AndroidRuntime(727): Caused by: java.lang.NullPointerException
08-20 09:18:25.710: E/AndroidRuntime(727):    at teo2490.android.SecondaAttivita.onCreate(SecondaAttivita.java:14)

Qualcosa è NULL e non dovrebbe.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline teo2490

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Re:Problema passaggio da una activity ad un'altra
« Risposta #4 il: 20 Agosto 2012, 11:30:03 CEST »
0
Alla riga 14 della seconda attività c'era:

Codice (Java): [Seleziona]
tv.setText("Questa è la seconda activity");
Ho provato a inizializzarlo così

Codice (Java): [Seleziona]
   tv = (TextView) findViewById(R.id.testo1);
      tv.setText("Questa è la seconda activity");    

ma da ancora lo stesso problema..

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:Problema passaggio da una activity ad un'altra
« Risposta #5 il: 20 Agosto 2012, 11:36:17 CEST »
0
Senza vedere il codice del layout, l'ipotesi più ovvia è che nel layout xml della seconda attività non hai una TextView con id=testo1.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline teo2490

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Re:Problema passaggio da una activity ad un'altra
« Risposta #6 il: 20 Agosto 2012, 11:39:54 CEST »
0
L'xml è il seguente:

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:text="Testo di default TextView1"
 android:id="@+id/testo1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
</TextView>

</LinearLayout>

è sbagliato così?

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:Problema passaggio da una activity ad un'altra
« Risposta #7 il: 20 Agosto 2012, 12:09:44 CEST »
0
Sembra giusto. A questo punto non ti resta che mettere nella riga precedente all'errore, un bel Log.d() per visualizzare il contenuto di tv. Così ti assicuro se è veramente "non null".
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Khali

  • Utente junior
  • **
  • Post: 70
  • Respect: +7
    • u.felloni
    • Mostra profilo
  • Play Store ID:
    weetme software
  • Sistema operativo:
    windows 7
Re:Problema passaggio da una activity ad un'altra
« Risposta #8 il: 20 Agosto 2012, 12:10:33 CEST »
0
Ciao.
Il null pointer inizialmente era dovuto alla non inizializzazione della textView tv.

Ho visto la tua successiva modifica.
L'inizializzazione va bene, ma ricordati che prima devi chiamare la

setContentView(R.layout.nome_del_file_xml);

Offline mdb

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +7
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Prometheo Apps
  • Sistema operativo:
    Windows
Re:Problema passaggio da una activity ad un'altra
« Risposta #9 il: 20 Agosto 2012, 12:16:06 CEST »
0
ma nella attività NON stai usando il layout del file xml, ne stai creando uno nuovo da codice di programmazione
(e nel modo sbagliato!)

in pratica invece di
Codice (Java): [Seleziona]
  LinearLayout linear = new LinearLayout(this);
    tv = (TextView) findViewById(R.id.testo1);
    tv.setText("Questa è la seconda activity");    
   linear.addView(tv);
   setContentView(linear);  

o fai così:
Codice (Java): [Seleziona]
  LinearLayout linear = new LinearLayout(this);
    tv = new TextView(this);
    tv.setText("Questa è la seconda activity");    
   linear.addView(tv);
   setContentView(linear);  

oppure se vuoi usare il file xml devi fare così

Codice (Java): [Seleziona]
  setContentView(R.layout.secondoxml);
    tv = (TextView) findViewById(R.id.testo1);
    tv.setText("Questa è la seconda activity");    
 

ps: codice non testato, l'ho scritto qui al volo
App per Android:
Almanacco: Giorno per giorno, eventi, notizie, giochi e curiosità, da leggere e condividere
Proverbi Napoletani: Più di 50 proverbi da ascoltare in dialetto napoletano. Due sottofondi musicali.