Autore Topic: Progetto con più activity  (Letto 814 volte)

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Progetto con più activity
« il: 05 Settembre 2012, 00:50:33 CEST »
0
Ho quasi finito un progetto, siccome ho lavorato sulle activity creando più progetti dovrei mettere tutto insieme e sto avendo dei problemi. L' applicazione ha una splashscreen, che dopo 5 seconda lancia un' altra activity che verifica se la connessione internet è presente, altrimenti chiude l' app, in caso affermativo invece avvia un' altra activity che è quella principale a cui avevo lavorato a parte e in cui ho problemi adesso. Infatti eclipse non dà problemi, sembra che ci siano tutte le risorse e i file apposto, però cliccando col tasto sinistro dovrebbe aprirsi un menù con delle immagini, mentre a me si vedono solo le scritte dei vari sottomenù in un elenco a stack, come mai visto che le immagini sono presenti nella cartella? E poi mentre prima in questa activity potevo girare lo schermo e non ripartiva, adesso nonostante ho copiato il codice identico, e creato il corrispondente main.xml, se giro lo schermo l' activity ricomincia, ma perchè!!!!? Vi supplico di aiutarmi.

Riporto i codici:

Splash:

Codice: [Seleziona]
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;

public class MainActivity extends Activity {
   
                @Override
                public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        requestWindowFeature(Window.FEATURE_NO_TITLE);
                        setContentView(R.layout.activity_main);
                       
                       
                        /* dopo 5 secondi apro il menu */
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                     public void run() {
                         
                                /* Creo l'Intent dinamico */
                                        Intent i = new Intent(getApplicationContext(), Check.class);
                                       
                                        /* Avvio l'activity scelta */
                                        startActivity(i);
                                       
                                        finish();
                       
                     }
                }, 5000);
               
                this.onStop();
                this.onDestroy();
                                               
        }
}

Classe Check:

Codice: [Seleziona]
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.Window;

public class Check extends Activity{
       
       
            private boolean CheckIntConn() {
                                    ConnectivityManager connectivityManager
                                    = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                                    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
                                    return activeNetworkInfo != null;
           }
       
            @Override
            public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.check_main);
       
       
       
        if(!CheckIntConn()){
            AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
            miaAlert.setTitle("Errore di connessione");
            miaAlert.setMessage("Abilitare Wi-fi o 3G prima di usare\n l' applicazione.")
        .setCancelable(false)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                    Check.this.finish();
                    Check.this.onDestroy();
               
            }
        });
            //AlertDialog alert = miaAlert.create();
            miaAlert.show();
       }
       
        else{
                 /* Creo l'Intent dinamico */
            Intent i = new Intent(getApplicationContext(), Progetto.class);
           
            /* Avvio l'activity scelta */
            startActivity(i);
        }
       
        this.onStop();
        this.onDestroy();
       
    }
}


Classe progetto (con problemi)

Codice: [Seleziona]
package dario.retografo.geolocalizzato;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.content.Context;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.Window;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;



public class Progetto extends MapActivity{
        /*
         * Tag del log
         */
        private final static String LOG_TAG = "CustomControllerMapActivity";
        /*
         
         */

        /*
         * Riferimento alla MapView
         */
        private MapView mapView;
        /*
         * Riferimento al MapController
         */
        private MapController mapController;       
       
    //Riferimento al MyLocationOverlay
    private MyLocationOverlay myLocationOverlay;
   

    // Otteniamo il riferimento al LocationManager
    LocationManager locationManager;
   

   
    //Riferimento al provider
    Location location;
     
            LocationListener locationListener = new LocationListener() {
   
       // @Override
          public void onLocationChanged(Location location) {
                  // Aggiorna il marker della mappa
                  mapView.invalidate();

                  // Aggiorna la location
                  Double geoLat = location.getLatitude()*1E6;
                  Double geoLng = location.getLongitude()*1E6;
                  GeoPoint point = new GeoPoint(geoLat.intValue(), geoLng.intValue());
                  mapController.setCenter(point);
                  mapController.animateTo(point);
          }

         // @Override
          public void onProviderDisabled(String provider) {
                  Toast.makeText(Progetto.this,
                                  "GPS disabilitato", Toast.LENGTH_SHORT).show();
                 
          }

         // @Override
          public void onProviderEnabled(String provider) {
                  Toast.makeText(Progetto.this,
                                  "GPS abilitato", Toast.LENGTH_SHORT).show();
          }

        //  @Override
          public void onStatusChanged(String provider, int status,Bundle extras) {
                  Toast.makeText(Progetto.this,
                                  "onStatusChanged "+provider+" status: "+status, Toast.LENGTH_SHORT).show();
          }
         
       
  };
   

        public boolean updateLocationOverlay() {
                        if (location == null) { return false; }
                                List<Overlay> mapOverlays = mapView.getOverlays();
                                        Drawable drawable = this.getResources().getDrawable(R.drawable.freccia);
                                        MyItemizedOverlay myItemizedOverlay = new MyItemizedOverlay(drawable);
                                        GeoPoint point = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));

                                        OverlayItem overlayitem = new OverlayItem(point, "", "");
                                        myItemizedOverlay.addOverlay(overlayitem);
                                        mapOverlays.add(myItemizedOverlay);
                                        mapController.setCenter(point);
                                        mapController.animateTo(point);
                                       
                return true;
        }
       
       

   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        // Mettiamo la View a tutto schermo
        requestWindowFeature(Window.FEATURE_NO_TITLE);
       
        //Visualizziamo la mappa
        setContentView(R.layout.main);
       
        // Otteniamo il riferimento alla MapView
        mapView = (MapView)findViewById(R.id.mapView);
       
       
        // Otteniamo il riferimento al LocationManager
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
       
       
        //Verifichiamo se il GPS è abiliato
        if(!locationManager.isProviderEnabled("gps")){
                Toast.makeText(this, "GPS disabilitato. Abilitare per una maggiore precisione.", Toast.LENGTH_LONG).show();
        }
       
        // Otteniamo il riferimento al controller
        mapController = mapView.getController();
        Log.i(LOG_TAG, "MapController obtained!");
        mapController.setZoom(20);

        // Rendiamo la mappa cliccabile e quindi ne permettiamo
        // il pan
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
       
        // Registriamo il LocationListener al provider GPS
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5, 1, locationListener);
     
     
        //Usiamo il provider Location GPS
        location= locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
       
     
       
       
     

      if(!locationManager.isProviderEnabled("gps") || this.updateLocationOverlay()==false){  //Non c' è il gps, utilizzo la rete
               
              locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5, 1, locationListener);
              location= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
              MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
          List<Overlay> overlays = mapView.getOverlays();
          overlays.add(myLocationOverlay);
          myLocationOverlay.enableMyLocation();       
          Toast.makeText(this, "Ecco la tua posizione: "+location.getLatitude()+" - "+location.getLongitude(), Toast.LENGTH_LONG).show();
      }
       
               

      else {
               
             /* // Registriamo il LocationListener al provider GPS
          locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5, 1, locationListener);
       
       
          //Usiamo il provider Location GPS
          location= locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);*/
             


                /*boolean gps=this.updateLocationOverlay();            
                if(gps==true)*/
                 Toast.makeText(this, "Ecco la tua posizione: "+location.getLatitude()+" - "+location.getLongitude(), Toast.LENGTH_LONG).show();
        }
}
   
   
   
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
   

   
    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
           
           
        int firstItem = Menu.FIRST;
                // Menù di gestione modalità di visualizzazione che, per renderle checkable
                // le inseriamo in un sottomenu
           
            SubMenu mapSubMenu = menu.addSubMenu("Map Modes");
                mapSubMenu.setIcon(android.R.drawable.ic_menu_mapmode);
                MenuItem trafficItem = mapSubMenu.add(1, firstItem, firstItem, "Traffic");
                trafficItem.setCheckable(true);
                MenuItem satelliteItem = mapSubMenu.add(1, firstItem+1, firstItem+1, "Satellite");
                satelliteItem.setCheckable(true);
               
               
       
                MenuItem pos=menu.add(Menu.NONE, 3, 3, "La mia posizione");
                pos.setIcon(R.drawable.localita);
                MenuItem scan=menu.add(Menu.NONE, 4, 4, "Cerca reti");
                scan.setIcon(R.drawable.lente);
                MenuItem ris=menu.add(Menu.NONE, 5, 5, "Risultati");
                ris.setIcon(R.drawable.risultati);

          
                // Visualizziamo il menu
                return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                // Modifichiamo lo stato di quella selezionata
                item.setChecked(!item.isChecked());
                // Abilitiamo o meno l'opzione relativa
                switch(item.getItemId()){
                case Menu.FIRST:
                        mapView.setTraffic(item.isChecked());
                        break;
                case Menu.FIRST+1:
                        mapView.setSatellite(item.isChecked());
                        break;
                       
                case 3:
                {
       
                     /* if(!locationManager.isProviderEnabled("gps"))
                       {
                                if(myLocationOverlay!=null)
                                        myLocationOverlay.disableMyLocation();*/
                     
                                 Toast.makeText(this, "Ecco la tua posizione: "+location.getLatitude()+" - "+location.getLongitude(), Toast.LENGTH_LONG).show();
                      // }
                        return true;
                }
               
                case 4:
                { //IMPLEMENTARE RICERCA RETI

                        /*Toast.makeText(this, "FUNZIONA", Toast.LENGTH_LONG).show();
                        return true;*/
                       
                }
               
                case 5:
                {
                        //IMPLEMENTARE DATABASE SUBMENU
                        Toast.makeText(this, "FUNZIONA", Toast.LENGTH_LONG).show();
                        return true;
                }
               
                case 6:
                {
                        //IMPLEMENTARE DATABASE SUBMENU
                        Toast.makeText(this, "FUNZIONA", Toast.LENGTH_LONG).show();
                        return true;
                }
               
                case 7:
                {
                        //IMPLEMENTARE DATABASE SUBMENU
                        Toast.makeText(this, "FUNZIONA", Toast.LENGTH_LONG).show();
                        return true;
                }
        }
                               
                //return super.onOptionsItemSelected(item);
                return true;
               
}
   
    @Override
        protected boolean isRouteDisplayed() {
                return false;
        }
}

La classe overlay la evito.....riporto manifest

Codice: [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="dario.retografo.geolocalizzato"
    android:versionCode="1"
    android:versionName="1.0" >

     <uses-sdk
         android:minSdkVersion="8"
         android:targetSdkVersion="15" />
   
    <application
        android:icon="@drawable/ic_launcher"
         android:label="@string/app_name">
         <uses-library android:name="com.google.android.maps" />
        <!-- android:theme="@style/AppTheme" > -->
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait">
            <!-- android:label="@string/title_activity_main" > -->
           
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
           
                 
        </activity>
       
        <activity android:name=".Check"
            android:configChanges="orientation|keyboardHidden">
           <!-- android:screenOrientation="portrait"> -->
       
        </activity>
       
        <activity android:name=".Progetto"
             android:configChanges="orientation|keyboardHidden">
           
        </activity>

           
    </application>
   
   

        <uses-permission
            android:name="android.permission.INTERNET" />
        <uses-permission
            android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission
            android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission
            android:name="android.permission.ACCESS_LOCATION" />
        <uses-permission
            android:name="android.permission.ACCESS_GPS" />   
            <uses-permission
                android:name="android.permission.ACCESS_NETWORK_STATE" />
            <uses-permission
                android:name="android.permission.ACCESS_WIFI_STATE"/>



</manifest>


xml della splash:

Codice: [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

   <ImageView
             android:id="@+id/splashscreen"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:layout_gravity="center"
             android:background="#000000"
             android:scaleType="centerInside"
             android:src="@drawable/splash"
             android:contentDescription="@string/desc"></ImageView>

   

</RelativeLayout>

E del Progetto:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <com.google.android.maps.MapView
                android:id="@+id/mapView" android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:apiKey="0I5JAQqaryt37TOD0QeVyBiMd5apD2NBLgtZZzw" />
        <LinearLayout android:layout_width="wrap_content"
                                android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal"
                                android:id="@+id/buttonLayout">
                 
        </LinearLayout>
</merge>

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
R: Progetto con più activity
« Risposta #1 il: 05 Settembre 2012, 08:19:48 CEST »
0
Clean Project provato?
Sinceramente non ho nemmeno ben capito...al posto delle immagini (ImageView) compaiono scritte (TextView)?

Inviato dal mio GT-I9100 con Tapatalk 2

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Re:Progetto con più activity
« Risposta #2 il: 05 Settembre 2012, 11:59:39 CEST »
0
Ok risolto....il problema era nel manifest alla riga:

Codice: [Seleziona]
android:targetSdkVersion="15" /> </uses-sdk>
L' ho tolta è ho solo messo
Codice: [Seleziona]
  android:minSdkVersion="8" ></uses-sdk>
Anche l' accelerometro funziona adesso. Anche se è offtopic, vorrei cogliere l' occasione per un altro problema....praticamente ho una voce del menù che dovrebbe effettuare la scansione delle reti wifi, e vedere i risultati cliccando su un altro tasto del menù. Quindi vorrei fare la scansione, e poi fare in modo che cliccando su un altro tasto si avvii un' altra activity in cui vedo i risultati, per cui dovrei passare nell' intent che avvia l' activity la mia List<ScaResult> list.....ho dato un' occhiata in giro ma non mi sono chiari i metodi per passare parametri...potresti chiarirmi la cosa?
« Ultima modifica: 05 Settembre 2012, 12:04:26 CEST da Darèios89 »