IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

ProgressDialog et etat du reseau.


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Par défaut ProgressDialog et etat du reseau.
    Bonjour,

    je développe une application qui a besoin d'avoir une connexion wifi.

    Quand la connexion wifi est interrompue, il faut empêcher la saisie en mettant un ProgressDialog et le faire disparaitre quand la connexion wifi est revenue.

    Or quand la connexion revient, mon ProgressDialog est toujours la alors que j'ai "dismiss" l'objet. Il n'est plus atteignable.


    les ecouteurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    wifiManager  = (WifiManager) getSystemService(Context.WIFI_SERVICE);
             // register the broadcast receiver for wifi state events
            IntentFilter filter = new IntentFilter();
            filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
            registerReceiver(wifiEventReceiver, filter);
    et la fonction en question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
     
     
     
     
    	public void onReceive(Context Context, Intent intent) {
     
     
    		Intent stratIntent = new Intent( Context,BroadcastReceiver.class);			
    		Context.startService(stratIntent);
    		int netID = 0;
    		String strBSSID = "";
    		wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    		    WifiInfo info = wifi.getConnectionInfo();
    		    String bssid = info.getSSID(); 
    			boolean disableAllOthers = true;
    	        // a mettre en varaible admin ID_routeur
    	        String ID_routeur = "Belkin.4614";
    	        int count=0;
    	        List<WifiConfiguration> lbssid = wifi.getConfiguredNetworks();
     
     
    	        ProgressDialog pd_reseau2  = ProgressDialog.show(Elyx.this,
    		               "Perte du reseau...", "Recherche",   true );
     
    	        pd_reseau2.hide();
     
    			if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
     
    		        if(info.getBSSID() == null){
    		        	//Toast.makeText(Elyx.this,"le réseau est perdu",Toast.LENGTH_SHORT).show();
    		        	pd_reseau2.show();
    		        	Toast.makeText(Elyx.this,"Show",Toast.LENGTH_SHORT).show();
    		        	launchWait();
    		        }
    		        else {	
     
    		        	try {		        		
    		        		pd_reseau2.hide();
    		        	} catch (Exception e){
    		        		Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    		        	}
     
     
    		        	Toast.makeText(Elyx.this,"Hide",Toast.LENGTH_SHORT).show();
    		    		//si nous somme actuellement connecter au bon routeur 
    		        	if(bssid.equals(ID_routeur)){ 
     
    		        		try {
    		                	Toast.makeText(Elyx.this,"Connecté sur le reseau officiel.",Toast.LENGTH_LONG).show();
    		          		} catch (Exception e){
    		          			Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    		          		}                				                  
     
    		        	}
    		        	else
    		        	{
     
    		        		try {
    		                	Toast.makeText(Elyx.this,"HIDE differant",Toast.LENGTH_LONG).show();
    		          		} catch (Exception e){
    		          			Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    		          		}
     
    		        		// recherche l'id tu routeur wifi pi et le force dessus
    		        		while(lbssid.size()> count)
    		                {
    		                	  //mStrings.add(count,lbssid.get(count).SSID);
    		                	  strBSSID = lbssid.get(count).SSID.replace("\"", "");
    		                	  if(strBSSID.equals(ID_routeur)){		                		  
    		                		  netID = lbssid.get(count).networkId;                    	 
    		                	  }
    		                		  count++;
    		                 } 		        		
    		        		wifi.enableNetwork(netID, disableAllOthers ); 
    		        	}
     
    		        }
     
    		      }
     
    		}	
     
    		};

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Ou fais tu le dismiss ? Je ne le vois pas présent dans ton code !

    Par contre je te conseille de créer tes dialogues comme tel , cela simplifie pas mal la gestion des dialogues

    http://developer.android.com/guide/t...i/dialogs.html

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Par défaut
    le dismiss a été remplacé par pd_reseau2.hide(); le résultat obtenue est le mémé.


    ca fait une semaine que j'essaye un peu tout ce que je trouve

    sinon pour le ProgressDialog j'ai pas l'impression de m'être tromper

    mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProgressDialog pd_reseau2  = ProgressDialog.show(Elyx.this,
    		               "Perte du reseau...", "Recherche",   true );
    celui de ton lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", 
                            "Loading. Please wait...", true);
    heu c'est le français dans une application qui te choque ?

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    heu c'est le français dans une application qui te choque ?
    Je te proposais juste de passer par les où la gestion de tes dialogues est plus simple .

    le dismiss a été remplacé par pd_reseau2.hide(); le résultat obtenue est le mémé
    Euhh... , peut être ce que tu vois à l'écran mais pas dans le code
    public void hide ()
    Since: API Level 1

    Hide the dialog, but do not dismiss it.
    De plus , tu crées directement ta progressdialog dans le Receive sans garder un lien vers cet objet . Comment veux tu par la suite , pouvoir contrôler cet objet en lui faisant un dismiss ou un hide ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Par défaut
    oki pour l'ID je vais tester.

    Citation Envoyé par Feanorin Voir le message


    De plus , tu crées directement ta progressdialog dans le Receive sans garder un lien vers cet objet . Comment veux tu par la suite , pouvoir contrôler cet objet en lui faisant un dismiss ou un hide ?
    ha je pense que tu as ma solution la comment tu le fait ? (ID justement ? )

    je débute en android et j'avoue que certaine logique m' echappe.

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Ton code devrait ressembler à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class NotificationTest extends Activity {
        static final int PROGRESS_DIALOG = 0;
        Button button;
        ProgressDialog progressDialog;
     
        /** Called when the activity is first created. */
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            // Setup the button that starts the progress dialog
            button = (Button) findViewById(R.id.progressDialog);
            button.setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    showDialog(PROGRESS_DIALOG);
                }
            }); 
        }
     
        protected Dialog onCreateDialog(int id) {
            switch(id) {
            case PROGRESS_DIALOG:
                progressDialog = new ProgressDialog(NotificationTest.this);
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.setMessage("Loading...");
               return progressDialog;
            default:
                return null;
            }
        }
    Pour faire un dismiss sur ta progress tu n'auras plus qu'a effectuer un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dismissDialog(PROGRESS_DIALOG);
    Après tu as un exemple dans le lien , c'est une progress avec un thread mais au moins tu auras la sémantique du code
    Tu trouveras le code dans cette partie dans le lien
    'Example ProgressDialog with a second thread'

    PS: Ce qui est utlie avec les showDialog c'est que lorsque une rotation est faite de l'appareil le dialogue reste afficher .

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Par défaut
    bonjour,

    merci pour ta réponse. (jolie progressbar j'avais pas encore vue celle la)

    sur un bouton dans le create ca marche nickel

    par contre il me sort une erreur sympa

    " no dialog with id 0 was ever shown via activity#showdialog "


    voici le code modifier grâce a tes remarques


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     public BroadcastReceiver wifiEventReceiver = new BroadcastReceiver() { 
     
     
    	@Override
    	public void onReceive(Context Context, Intent intent) {
     
     
     
    		Intent stratIntent = new Intent( Context,BroadcastReceiver.class);			
    		Context.startService(stratIntent);
    		int netID = 0;
    	    String strBSSID = "";
    		wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    	    WifiInfo info = wifi.getConnectionInfo();
    	    String bssid = info.getSSID(); 
    		boolean disableAllOthers = true;
            // a mettre en varaible admin ID_routeur
            String ID_routeur = "Belkin.4614";
            int count=0;
            List<WifiConfiguration> lbssid = wifi.getConfiguredNetworks();
     
    		if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {			
    	        if(info.getBSSID() == null){
    	        	try {		        		
    	        		showDialog(PROGRESS_DIALOG);
    	        	} catch (Exception e){
    	        		Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    	        	}
    	        }
    	        else {	
     
    	        	try {		        		
    	        		dismissDialog(PROGRESS_DIALOG);
    	        	} catch (Exception e){
    	        		Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    	        	}
     
    	    		//si nous somme actuellement connecter au bon routeur 
    	        	if(bssid.equals(ID_routeur)){ 
     
    	        		try {
    	                	Toast.makeText(Elyx.this,"Connecté sur le reseau officiel.",Toast.LENGTH_LONG).show();
    	          		} catch (Exception e){
    	          			Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    	          		}                				                  
     
    	        	}
    	        	else
    	        	{
     
    	        		try {
    	                	Toast.makeText(Elyx.this,"HIDE differant",Toast.LENGTH_LONG).show();
    	          		} catch (Exception e){
    	          			Toast.makeText(Elyx.this,"Erreur = " + e.getMessage(),Toast.LENGTH_LONG).show();
    	          		}
    	        		// recherche l'id tu routeur wifi pi et le force dessus
    	        		while(lbssid.size()> count)
    	                {
    	                	  //mStrings.add(count,lbssid.get(count).SSID);
    	                	  strBSSID = lbssid.get(count).SSID.replace("\"", "");
    	                	  if(strBSSID.equals(ID_routeur)){		                		  
    	                		  netID = lbssid.get(count).networkId;                    	 
    	                	  }
    	                		  count++;
    	                 } 		        		
    	        		wifi.enableNetwork(netID, disableAllOthers ); 
    	        	}
     
    	        }
     
    	      }
     
    	}	
     
    	};
    après de quelque test ta solution marche très bien merci bien monsieur Feanorin

    merci ho grand modérateur

  8. #8
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Essaye de mettre des logs , mais c'est fort possible que tu fasses un dismiss avant de faire une show sur ton dialog.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Par défaut
    désolé le temps de retester d'éditer de mettre en résolue

    tu avait déjà répondu

    CA MARCHE tu viens de résoudre mon problème qui datait d'une semaine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Creer un reseau local via l adsl
    Par loki dans le forum Développement
    Réponses: 11
    Dernier message: 12/08/2002, 00h14
  2. reseau de neuronnes
    Par mumu2001 dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 25/07/2002, 09h33
  3. bare d'etat
    Par parasito16211 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/07/2002, 08h02
  4. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo