Autore Topic: Strano comportamento di onResume  (Letto 433 volte)

Offline Bartolomeo

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    4.4.2
Strano comportamento di onResume
« il: 12 Maggio 2014, 20:02:07 CEST »
0
Ciao ragazzi,

 non riesco proprio a capire come mai ho questo comportamento.
Vi spiego, praticamente ho due switch per far attivare o disattivare le impostazioni del gps e 3g.
quanto viene switchato on faccio creare e avviare un intent all'activity delle impostazione standard di android.
resta il fatto che se nelle impostazioni metto off e torno indietro lo switch mi resta su on. Ho provato di tutto facendo l'override di onResume non so perchè mi viene lanciato due volte l'intent uno per attivare e uno per disattivare.
allego mio java e xml.
Codice (Java): [Seleziona]
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class OpzioniFragment extends Fragment{
       
    private Switch switchGPS;
    private Switch switchInternet;
        boolean isGPSEnabled = false;
        private LocationManager locMan;


       
        @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        View rootView = inflater.inflate(R.layout.fragment_opzioni, container, false);
       
       
        switchGPS = (Switch) rootView.findViewById(R.id.switchGPS);
        switchInternet = (Switch) rootView.findViewById(R.id.switchInternet);
        locMan = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
                isGPSEnabled = locMan.isProviderEnabled(LocationManager.GPS_PROVIDER);
               
                controllaStatiOn();
                   
        switchGPS.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
         
             if(isChecked){
                 Toast.makeText(getActivity(), "Attivando il GPS...", Toast.LENGTH_SHORT).show();
             }else {
                                 Toast.makeText(getActivity(), "Disattivando il GPS...", Toast.LENGTH_SHORT).show();
             }
             
             Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
             getActivity().startActivity(intent);
         
            }
           });

           switchInternet.setOnCheckedChangeListener(new OnCheckedChangeListener() {
   
               @Override
               public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
             
                if(isChecked){
                                          Toast.makeText(getActivity(), "Attivando Internet...", Toast.LENGTH_SHORT).show();
                }else{
                                          Toast.makeText(getActivity(), "Disattivando Internet...", Toast.LENGTH_SHORT).show();
                }
                                  Intent intent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);
                                  getActivity().startActivity(intent);
               }
              });

        return rootView;
    }
       
        public boolean isOnline() {
            ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getActiveNetworkInfo();
            if (netInfo != null && netInfo.isConnectedOrConnecting()) {
                return true;
            }
            return false;
        }
       
        private void controllaStatiOn(){
                               
                if(isGPSEnabled){
                switchGPS.setChecked(true);
        }else switchGPS.setChecked(false);
               
        if(isOnline())
        {
                switchInternet.setChecked(true);
        }else switchInternet.setChecked(false);
        }
@Override
public void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        controllaStatiOn();
}


mio xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

    <Switch
       android:id="@+id/switchGPS"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentTop="true"
       android:layout_marginTop="31dp"
       android:text="Impostazioni GPS" />

    <Switch
       android:id="@+id/switchInternet"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentRight="true"
       android:layout_below="@+id/switchGPS"
       android:layout_marginTop="19dp"
       android:text="Impostazioni Internet" />


   
</RelativeLayout>


Grazie mille

Offline R0om

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus tf101g
  • Sistema operativo:
    windows8
Re:Strano comportamento di onResume
« Risposta #1 il: 12 Maggio 2014, 21:22:31 CEST »
0
mmm, sec me dovresti prima prendere lo stato del gps e del 3g, e poi fai eseguire i due switch. In questo modo  dovresti avere sotto controllo lo stato del dispositivo

Offline Bartolomeo

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    4.4.2
Re:Strano comportamento di onResume
« Risposta #2 il: 13 Maggio 2014, 00:43:24 CEST »
0
ok provo.

Post unito: [time]13 Maggio 2014, 00:51:28 CEST[/time]
ok provo.

mmm non riesco a capire quello che vuoi dire !!!


Post unito: [time]13 Maggio 2014, 01:59:50 CEST[/time]
se qualcuno sa come si fa con i toggle button ci sto lo stesso.
Vorrei poter fare questa cosa .... altrimenti semplifico con un bottone.
Grazie
« Ultima modifica: 13 Maggio 2014, 02:00:06 CEST da Bartolomeo »

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Strano comportamento di onResume
« Risposta #3 il: 13 Maggio 2014, 09:16:49 CEST »
0
Hai creato una variabile booleana chiamata isGPSEnabled, che però inizializzi solo nell'onCreateView(), in questo modo rimane tale anche quando il GPS viene disattivato. Prova a "trasformare" questa variabile che hai creato, in un metodo, come hai fatto per isOnline()  ;-)