Autore Topic: Problema avvio activity e Dialog  (Letto 1134 volte)

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Problema avvio activity e Dialog
« il: 20 Agosto 2012, 15:03:55 CEST »
0
Ho un' applicazione in cui se scrivo nel metodo Oncreate questo: tutto funziona:

Codice: [Seleziona]
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        // Mettiamo la View a tutto schermo
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // Visualizziamo la Map
        setContentView(R.layout.main);
     // Otteniamo il riferimento alla MapView
        mapView = (MapView)findViewById(R.id.mapView);
        // Otteniamo il riferimento al controller
        mapController = mapView.getController();
      Log.i(LOG_TAG, "MapController obtained!");
     
        // Rendiamo la mappa cliccabile e quindi ne permettiamo
        // il pan
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
       
        // Aggiungiamo l'overlay sulla mappa della nostra posizione
        myLocationOverlay = new MyLocationOverlay(this, mapView);
        List<Overlay> overlays = mapView.getOverlays();
        overlays.add(myLocationOverlay);
        myLocationOverlay.enableMyLocation();
       
       
        // Otteniamo il riferimento al LocationManager
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    .
    .
    .

Se invece di inserire ciò che riguarda la mappa faccio dei controlli sulla presenza della connessione di rete(per cui è previsto l' uso di un toast) oppure sul GPS in cui uso un AlertDialog, resta la schermata nera e non si avvia l' activity, cioè se scrivo:

Codice: [Seleziona]
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
        if (gpsProvider == null) {
        // GPS non disponibile
        } else {
        // GPS disponibile
        }
       
       
       
        // Verifichiamo se la rete è abilitata
        if(!CheckIntConn()){
                AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
                miaAlert.setTitle("Errore di connessione");
                miaAlert.setMessage("Abilitare il GPS prima di avviare l' applicazione.")
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                     CustomControllerMapActivity.this.finish();
                }
            });
                AlertDialog alert = miaAlert.create();
                miaAlert.show();
    }
       
       
        //Verifichiamo se il GPS è abilitato
        if(!locationManager.isProviderEnabled("gps")){
                Toast.makeText(this, "GPS attualmente disabilitato. Abilitare per una maggiore precisione.", Toast.LENGTH_LONG).show();
        }

E setto dopo la mappa. Come andrebbe scritto il tutto se volessi prima controllare la presenza della connessione rete, e poi avviare la mappa?
Non sono molto prativo con le activity, del resto mi pare di avere capito che nell' onCreate viene settata, ma non avviata, perchè però nel primo modo funziona?

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Problema avvio activity e Dialog
« Risposta #1 il: 21 Agosto 2012, 10:39:59 CEST »
+1
Sei sicuro che non ci sia un eccezione nel LogCat?

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Problema avvio activity e Dialog
« Risposta #2 il: 21 Agosto 2012, 11:56:47 CEST »
0
Mh....questo è il logCat:

Codice: [Seleziona]
08-21 11:53:44.315: W/MapActivity(9259): Recycling dispatcher android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher@4150f340
08-21 11:53:44.330: V/MapActivity(9259): Recycling map object.
08-21 11:53:44.345: I/CustomControllerMapActivity(9259): MapController obtained!
08-21 11:53:44.355: I/Maps.MyLocationOverlay(9259): Request updates from network
08-21 11:53:44.450: I/MapActivity(9259): Handling network change notification:CONNECTED
08-21 11:53:44.450: E/MapActivity(9259): Couldn't get connection factory client
08-21 11:53:50.705: W/CursorWrapperInner(9259): Cursor finalized without prior close()
08-21 11:53:50.710: D/dalvikvm(9259): GC_CONCURRENT freed 1081K, 11% free 10303K/11463K, paused 3ms+6ms
08-21 11:53:51.790: D/dalvikvm(9259): GC_FOR_ALLOC freed 172K, 11% free 10217K/11463K, paused 24ms
08-21 11:53:51.790: I/dalvikvm-heap(9259): Grow heap (frag case) to 10.717MB for 731536-byte allocation
08-21 11:53:51.825: D/dalvikvm(9259): GC_CONCURRENT freed <1K, 5% free 10931K/11463K, paused 3ms+3ms
08-21 11:53:54.420: D/dalvikvm(9259): GC_FOR_ALLOC freed 840K, 10% free 10396K/11463K, paused 33ms
08-21 11:53:54.420: I/dalvikvm-heap(9259): Grow heap (frag case) to 10.891MB for 731536-byte allocation
08-21 11:53:54.460: D/dalvikvm(9259): GC_CONCURRENT freed 2K, 4% free 11108K/11463K, paused 3ms+3ms
08-21 11:53:55.045: D/dalvikvm(9259): GC_FOR_ALLOC freed 720K, 10% free 10395K/11463K, paused 14ms
08-21 11:53:55.045: I/dalvikvm-heap(9259): Grow heap (frag case) to 10.890MB for 731536-byte allocation
08-21 11:53:55.070: D/dalvikvm(9259): GC_CONCURRENT freed 1K, 4% free 11108K/11463K, paused 1ms+2ms
08-21 11:53:56.045: D/dalvikvm(9259): GC_FOR_ALLOC freed 35K, 2% free 11248K/11463K, paused 24ms
08-21 11:53:56.045: I/dalvikvm-heap(9259): Grow heap (frag case) to 11.723MB for 731536-byte allocation
08-21 11:53:56.060: D/dalvikvm(9259): GC_FOR_ALLOC freed <1K, 3% free 11962K/12231K, paused 18ms
08-21 11:53:58.495: D/dalvikvm(9259): GC_CONCURRENT freed 1480K, 13% free 11452K/13063K, paused 2ms+3ms
08-21 11:53:59.920: D/dalvikvm(9259): GC_CONCURRENT freed 1177K, 16% free 11051K/13063K, paused 3ms+14ms
08-21 11:54:01.740: D/dalvikvm(9259): GC_FOR_ALLOC freed 938K, 20% free 10464K/13063K, paused 27ms
08-21 11:54:01.740: I/dalvikvm-heap(9259): Grow heap (frag case) to 10.958MB for 731536-byte allocation
08-21 11:54:01.780: D/dalvikvm(9259): GC_CONCURRENT freed 2K, 15% free 11176K/13063K, paused 2ms+3ms
08-21 11:54:02.820: D/dalvikvm(9259): GC_CONCURRENT freed 749K, 15% free 11220K/13063K, paused 3ms+3ms
08-21 11:54:03.980: D/dalvikvm(9259): GC_FOR_ALLOC freed 756K, 19% free 10587K/13063K, paused 25ms
08-21 11:54:03.980: I/dalvikvm-heap(9259): Grow heap (frag case) to 11.078MB for 731536-byte allocation
08-21 11:54:04.020: D/dalvikvm(9259): GC_CONCURRENT freed 3K, 14% free 11298K/13063K, paused 3ms+4ms
08-21 11:54:10.335: D/CLIPBOARD(9259): Hide Clipboard dialog at Starting input: finished by someone else... !

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 avvio activity e Dialog
« Risposta #3 il: 21 Agosto 2012, 12:08:33 CEST »
+1
L'unica cosa che mi viene in mente è che le prime due righe della onCreate dovrebbero essere (quasi) sempre: super.onCreate(savedInstanceState) e poi setContentView(R.layout.main). Se manca la seconda (mi sa che è il tuo secondo caso), non imposti nessun contenuto per la tua activity (schermo nero).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Problema avvio activity e Dialog
« Risposta #4 il: 21 Agosto 2012, 12:18:16 CEST »
0
Quindi dici così?

Codice: [Seleziona]
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //Verifichiamo se il dispositivo e' dotato di GPS
        LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
        if (gpsProvider == null) {
        // GPS non disponibile
        } else {
        // GPS disponibile
        }
       
       
        // Verifichiamo se la rete è abilitata
        if(!CheckIntConn()){
                AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
                miaAlert.setTitle("Errore di connessione");
                miaAlert.setMessage("Abilitare il GPS prima di avviare l' applicazione.")
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                     CustomControllerMapActivity.this.finish();
                }
            });
                AlertDialog alert = miaAlert.create();
                miaAlert.show();
    }
       
       
       
        // Mettiamo la View a tutto schermo
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // Visualizziamo la Map
        setContentView(R.layout.main);
     // Otteniamo il riferimento alla MapView
        mapView = (MapView)findViewById(R.id.mapView);
        // Otteniamo il riferimento al controller
        mapController = mapView.getController();
      Log.i(LOG_TAG, "MapController obtained!");
     
        // Rendiamo la mappa cliccabile e quindi ne permettiamo
        // il pan
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
       
        // Aggiungiamo l'overlay sulla mappa della nostra posizione
        myLocationOverlay = new MyLocationOverlay(this, mapView);
        List<Overlay> overlays = mapView.getOverlays();
        overlays.add(myLocationOverlay);
        myLocationOverlay.enableMyLocation();
       
       
        // Otteniamo il riferimento al LocationManager
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
       
        //Verifichiamo se il GPS è abiliato
        if(!locationManager.isProviderEnabled("gps")){
                Toast.makeText(this, "GPS attualmente disabilitato. Abilitare per una maggiore precisione.", Toast.LENGTH_LONG).show();
        }
     
       
  }

Purtroppo spunta sempre una schermata nera.....con il titolo dell' applicazione...e dopo pochi secondi crasha.

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 avvio activity e Dialog
« Risposta #5 il: 21 Agosto 2012, 12:36:37 CEST »
+1
Purtroppo spunta sempre una schermata nera.....con il titolo dell' applicazione...e dopo pochi secondi crasha.

Ok, al crash deve corrispondere un errore ben preciso nel LogCat, con la causa. Puoi riprovare a trovarlo?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Problema avvio activity e Dialog
« Risposta #6 il: 21 Agosto 2012, 15:17:55 CEST »
0
Ecco il LogCat....sono parecchi:

Codice: [Seleziona]
08-21 15:16:17.810: I/dalvikvm(20876): Turning on JNI app bug workarounds for target SDK version 11...
08-21 15:16:17.990: D/dalvikvm(20876): GC_CONCURRENT freed 186K, 3% free 9116K/9351K, paused 4ms+1ms
08-21 15:16:17.990: W/CursorWrapperInner(20876): Cursor finalized without prior close()
08-21 15:16:18.000: D/AndroidRuntime(20876): Shutting down VM
08-21 15:16:18.000: W/dalvikvm(20876): threadid=1: thread exiting with uncaught exception (group=0x40c4f1f8)
08-21 15:16:18.000: E/AndroidRuntime(20876): FATAL EXCEPTION: main
08-21 15:16:18.000: E/AndroidRuntime(20876): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.apogeo.android.cap11.customcontrollermap/it.apogeo.android.cap11.customcontrollermap.CustomControllerMapActivity}: java.lang.NullPointerException
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.ActivityThread.access$600(ActivityThread.java:127)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.os.Handler.dispatchMessage(Handler.java:99)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.os.Looper.loop(Looper.java:137)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.ActivityThread.main(ActivityThread.java:4507)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at java.lang.reflect.Method.invokeNative(Native Method)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at java.lang.reflect.Method.invoke(Method.java:511)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at dalvik.system.NativeStart.main(Native Method)
08-21 15:16:18.000: E/AndroidRuntime(20876): Caused by: java.lang.NullPointerException
08-21 15:16:18.000: E/AndroidRuntime(20876):         at it.apogeo.android.cap11.customcontrollermap.CustomControllerMapActivity.onCreate(CustomControllerMapActivity.java:67)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.Activity.performCreate(Activity.java:4465)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
08-21 15:16:18.000: E/AndroidRuntime(20876):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
08-21 15:16:18.000: E/AndroidRuntime(20876):         ... 11 more


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 avvio activity e Dialog
« Risposta #7 il: 21 Agosto 2012, 15:26:11 CEST »
+1
Ok un po' di info sul LogCat: gli errori non sono parecchi, è un unico errore di cui viene mostrato tutto lo stack trace, considerala la catena di chiamate di funzioni che ha portato all'errore.

La causa principale dell'errore è una NullPointerException, cioè qualcosa è null e non dovrebbe esserlo.

Citazione
08-21 15:16:18.000: E/AndroidRuntime(20876): Caused by: java.lang.NullPointerException

Precisamente alla riga 67 della tua CustomControllerMapActivity.

Citazione
08-21 15:16:18.000: E/AndroidRuntime(20876):         at it.apogeo.android.cap11.customcontrollermap.CustomControllerMapActivity.onCreate(CustomControllerMapActivity.java:67)

Vai a quel rigo e scopri cosa potrebbe essere null. Se non è evidente, fai precedere la riga da un Log.d() per testare se ciascuno degli oggetti è null.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Problema avvio activity e Dialog
« Risposta #8 il: 21 Agosto 2012, 15:39:09 CEST »
0
Non riesco a visualizzare il numero di riga....cliccando con il tasto destro non mi spunta show line o qualcosa di simile.. :(

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 avvio activity e Dialog
« Risposta #9 il: 21 Agosto 2012, 15:43:20 CEST »
+1
Non riesco a visualizzare il numero di riga....cliccando con il tasto destro non mi spunta show line o qualcosa di simile.. :(

Vabbeh... c'è scritto nella status bar di eclipse... oppure se non lo vedi, copi e incolli tutto in un editor con i numeri di riga... oppure conti manualmente le righe.  ;-)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Problema avvio activity e Dialog
« Risposta #10 il: 21 Agosto 2012, 16:10:55 CEST »
0
Ok....credo di avere risolto....praticamente il nullpointer dovrebbe essere qui e non so perchè non gli piace:

Codice: [Seleziona]
        LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
        if (gpsProvider == null) {
        // GPS non disponibile
        } else {
        // GPS disponibile


E poi altre cose che non andavano tipo
Codice: [Seleziona]
        // Mettiamo la View a tutto schermo
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // Visualizziamo la Map
        setContentView(R.layout.main);

setContentView era definita più volte. Ho pensato di risolvere creando questa activity e poi se non ci sono errori di connessione ne creo un' altra dove si vede la mappa, vedrò più tardi, adesso mi aspetta sistemi operativi....ti ringrazio!