Autore Topic: Problema .class in tab  (Letto 325 volte)

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Problema .class in tab
« il: 17 Marzo 2014, 10:31:20 CET »
0
Ciao, mi trovo davanti ad una situazione per me incomprensibile, ho a che fare con una classe che se avviata singolarmente funziona correttamente, mentre avviandola da layout con  tab non si avvia. In pratica, quando avvio l'app, mi compare un primo layout con due bottoni, il primo mi avvia la classe ins_anno, dove posso inserire la variabile anno, da passare a Gennaio.class. clicco sul relativo bottone di passaggio e avvio la classe Gennaio che funziona perfettamente.
Codice (Java): [Seleziona]
Cursor mCursor = dataBase.rawQuery("SELECT * FROM " + DbHelper.TURNI_TABLE+" WHERE MESE = 'Gennaio' and ANNO = "+anno+"", null);.

Inserita la variabile, se torno al layout iniziale, mediante tasto back  e visualizzare i vari mesi tramite tabwidget, l'app si blocca generandomi il log qui sotto,
Codice (Java): [Seleziona]
03-16 22:06:32.239: W/dalvikvm(1902): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
03-16 22:06:32.298: E/AndroidRuntime(1902): FATAL EXCEPTION: main
03-16 22:06:32.298: E/AndroidRuntime(1902): java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.TurniDB}: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: java.lang.NullPointerException
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.os.Looper.loop(Looper.java:137)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.main(ActivityThread.java:4424)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at java.lang.reflect.Method.invoke(Method.java:511)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at dalvik.system.NativeStart.main(Native Method)
03-16 22:06:32.298: E/AndroidRuntime(1902): Caused by: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: java.lang.NullPointerException
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:178)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:523)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityGroup.onResume(ActivityGroup.java:61)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.Activity.performResume(Activity.java:4539)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
03-16 22:06:32.298: E/AndroidRuntime(1902):     ... 12 more
03-16 22:06:32.298: E/AndroidRuntime(1902): Caused by: java.lang.NullPointerException
03-16 22:06:32.298: E/AndroidRuntime(1902):     at com.turniDB.Gennaio.displayData(Gennaio.java:161)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at com.turniDB.Gennaio.onResume(Gennaio.java:150)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.Activity.performResume(Activity.java:4539)
03-16 22:06:32.298: E/AndroidRuntime(1902):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
03-16 22:06:32.298: E/AndroidRuntime(1902):     ... 18 more
.
Quello che non capisco, perchè se la classe la avvio singolarmente funziona, mentre se tento di avviarla attraverso tabwidget  l'app va in crash?
Da notare, che se elimino sulla classe la parte relativa al prelevamento della variabile  da ins_anno, ossia la parte
Codice (Java): [Seleziona]
Anno = (TextView) this.findViewById(R.id.anno_txt);
                Bundle bundle = getIntent().getExtras();
                String pkg = getPackageName();
                String ANNO = bundle.getString(pkg + "anno");
               
                Anno.setText(ANNO);
                int anno = Integer.parseInt(ANNO);
                Integer.toString(anno);
                System.out.println(+anno+"");
                TextView textanni = (TextView) findViewById(R.id.anno_txt);
        textanni.setText("Gennaio  "+ anno);
l'app con  tabwidget  funziona perfettamente, quindi mi lascia pensare che non è il tabwidget che non va, ma ovviamente non posso immettere la variabile.
Qualcuno mi può spiegare dove potrebbe essere l'inghippo? Grazie.
Qualcuno degli esperti ha idea su cosa possa creare il problema. Sono giorni che ci sbatto la testa ma non riesco a venirne a capo.

Post unito: [time]17 Marzo 2014, 15:08:50 CET[/time]
Ok, mi rispondo parzialmente da solo, quando avvio la classe di inserimento per l'anno, eseguo poi lo start activity relativo al mese dichiarato,
in pratica, avendo una classe di questo tipo:
Codice (Java): [Seleziona]
public class Ins_anno extends Activity {
        Intent ANNO,TAB;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_anno);
       
        int i=2014;
       
        ANNO= new Intent(this, Gennaio.class);
        ANNO= new Intent(this, Febbraio.class);
        ANNO= new Intent(this, Marzo.class);
        ANNO= new Intent(this, Aprile.class);
        ANNO= new Intent(this, Maggio.class);
        ANNO= new Intent(this, Giugno.class);
        ANNO= new Intent(this, Luglio.class);
        ANNO= new Intent(this, Agosto.class);
        ANNO= new Intent(this, Settembre.class);
        ANNO= new Intent(this, Ottobre.class);
        ANNO= new Intent(this, Novembre.class);
        ANNO= new Intent(this, Dicembre.class);
        TAB= new Intent(this, TurniDB.class);
       
        String pkg=getPackageName();
       
        ANNO.putExtra(pkg+".myInt", i);{
                         {
                                 startActivity(TAB);
                        }
                       
                }
    }
}
Dovrei eseguire prima gli intent ANNO e successivamente far eseguire la classe TAB.
Mi rimane il problema, di come fare per eseguire gli intent ANNO e successivamente fare startactivity TAB? esiste modo per farlo?
« Ultima modifica: 17 Marzo 2014, 15:09:44 CET da giannit »