CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Problema avvio activity e Dialog

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Senior Droid


    Registrato dal
    Jan 2012
    Messaggi
    304
    Smartphone
    LG G6

    Ringraziamenti
    76
    Ringraziato 3 volte in 3 Posts
    Predefinito

    Problema avvio activity e Dialog

    Ho un' applicazione in cui se scrivo nel metodo Oncreate questo: tutto funziona:

    codice:
    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:
    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?

  2.  
  3. #2
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Ciao,

    CheckIntConn() che fa?

    Ad ogni modo, prova ad annidare il codice che ti serve in controlli connettività sia a livello di presenza apn / linea dati presente, sia a livello di raggiungibilità URL, e solo dopo avvii le operazioni.
    Ti posto i metodi che utilizzo io per fare check sulla connessione e sulla raggiungibilità di un URL qualsiasi:

    Check linea dati device presente:
    codice:
    public static boolean isNetworkAvailable(Context context) {
    	ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);      
    		if (connectivity != null) {         
    			NetworkInfo[] info = connectivity.getAllNetworkInfo();
    		         if (info != null) {
    		            for (int i = 0; i < info.length; i++) {
    		               if (info[i].getState() == NetworkInfo.State.CONNECTED) {
    		                  return true;               
    		               }            
    		            }         
    	             }     
    	   }
    		return false;   
    	} //end isNetworkAvailable
    check url raggiungibile (per utilizzarlo, devi passare come parametro pUrl una stringa del tipo: 'https://www.androidiani.com':
    codice:
    public static boolean checkConnessioneUrl(String pUrl) {
    
            try {
                URL url = new URL(pUrl);
                HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
                urlc.setRequestProperty("Connection", "close");
                urlc.setConnectTimeout(5 * 1000); timeout in millisecondi
                urlc.connect();
                if (urlc.getResponseCode() == 200) { 
                    return true;
                } else { 
                    return false;
                }
            } catch (IOException e) {
            	e.printStackTrace();
                return false;
            }
        }
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy