Autore Topic: Ripete il package.. perchè!?!?  (Letto 1205 volte)

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Ripete il package.. perchè!?!?
« il: 21 Luglio 2012, 17:51:20 CEST »
0
Ragazzi praticamente quando nel manifest linko qualsiasi activity mi va tutto liscio, nel momento in cui (seguendo la vostra guida) linko la MapActivity mi dà il seguente errore:


07-21 17:47:15.033: E/AndroidRuntime(761): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{progetto.pkg/progetto.pkg.dove}: java.lang.ClassNotFoundException: progetto.pkg.dove

ovviamente non riesce a trovare la classe perché ripete il nome del package e non trova nulla!! Perché con le activity funziona e con la MapActivity no? sto impazzendo!!

aiutatemi per favore  :-(

questo è il manifest

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="progetto.pkg"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <uses-permission android:name="android.permission.INTERNET" />
    <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-library android:name="com.google.android.maps" />
   
    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name" >
        <activity
           android:name=".main"
           android:label="@string/app_name" >
            <intent-filter/>
        </activity>
       
        <activity android:name=".profilo"
                 android:label="@string/app_name">
            <intent-filter/>
        </activity>
       
         <activity android:name=".riepilogo"
                 android:label="@string/app_name">
            <intent-filter/>
        </activity>
     
        <activity android:name=".dove"
                 android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
       
    </application>
   

</manifest>

qui il codice della mapview

Codice: [Seleziona]
package progetto.pkg;

import progetto.pkg.R;
import java.util.List;

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 android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;


public class dove extends MapActivity {
    private TextView tvLatitudine;
    private TextView tvLongitudine;
    private TextView tvVelocita;
    private TextView tvQuota;
    private TextView tvAccuratezza;

    //Riferimento alla MapView
    private MapView mapView;

    //Riferimento al MapController
    MapController mapController;

    //Riferimento al MyLocationOverlay
    private MyLocationOverlay myLocationOverlay;

    // Otteniamo il riferimento al LocationManager
    LocationManager locationManager;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.map);

            tvLatitudine = (TextView)this.findViewById(R.id.tvLatitudine);
            tvLongitudine = (TextView)this.findViewById(R.id.tvLongitudine);
            tvVelocita = (TextView)this.findViewById(R.id.tvVelocita);
            tvQuota = (TextView)this.findViewById(R.id.tvQuota);
            tvAccuratezza = (TextView)this.findViewById(R.id.tvAccuratezza);

            // Otteniamo il riferimento alla MapView
            mapView = (MapView)findViewById(R.id.mapView);

            // Otteniamo il riferimento al controller
            mapController = mapView.getController();

            // Rendiamo la mappa cliccabile e quindi ne permettiamo il pan
            mapView.setClickable(true);

            // Utiliziamo i controlli predefiniti per la gestione delle operazioni di zoom
            mapView.setBuiltInZoomControls(true);

            // Impostiamo la distanza dello Zoom a 12 (valori validi da 1 a 21).
            mapController.setZoom(12);

            // 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 è abilitato altrimenti avvisiamo l'utente
            if(!locationManager.isProviderEnabled("gps")){
                    Toast.makeText(this, "GPS è attualmente disabilitato. E' possibile abilitarlo dal menu impostazioni.", Toast.LENGTH_LONG).show();
            }

            // Registriamo il LocationListener al provider GPS
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
    }

    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.animateTo(point);

                    tvLatitudine.setText(Double.toString(getRound(location.getLatitude(), 5)));
                    tvLongitudine.setText(Double.toString(getRound(location.getLongitude(), 5)));
                    tvVelocita.setText(Double.toString(getRound(location.getSpeed()*3.6, 1))+" km/h");
                    tvQuota.setText(Integer.toString((int)location.getAltitude())+" m");
                    tvAccuratezza.setText(Integer.toString((int)location.getAccuracy())+" m");
            }

            @Override
            public void onProviderDisabled(String provider) {
                    Toast.makeText(dove.this,
                                    "onProviderDisabled "+provider, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onProviderEnabled(String provider) {
                    Toast.makeText(dove.this,
                                    "onProviderEnabled "+provider, Toast.LENGTH_SHORT).show();
            }

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

    @Override
    public void onPause() {
            super.onPause();
            // Stoppa Listener delle posizioni
            if(locationManager != null){
                    locationManager.removeUpdates(locationListener);
                    myLocationOverlay.disableMyLocation();
            }
    }

    @Override
    protected void onResume() {
            super.onResume();
            // Registriamo il LocationListener al provider GPS
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
            myLocationOverlay.enableMyLocation();
    }

    public static double getRound(double x, int digits){
            double powerOfTen = Math.pow(10, digits);
            return ((double)Math.round(x * powerOfTen) / powerOfTen);
    }

    @Override
    protected boolean isRouteDisplayed() {
            // TODO Auto-generated method stub
            return false;
    }
}
« Ultima modifica: 21 Luglio 2012, 17:54:05 CEST da dAn89 »

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Ripete il package.. perchè!?!?
« Risposta #1 il: 21 Luglio 2012, 19:26:54 CEST »
0
l'errore è nel manifest
come lo hai scritto tu, dici ceh map è il main. inoltre ripeti il nome del tab in ogni activity (nn c'è bisogno)
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="progetto.pkg"
  android:versionCode="1"
  android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

   
    <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" />
   
   
    <application
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name" >

 <uses-library android:name="com.google.android.maps" />
   
        <activity
          android:name=".main"
          android:label="@string/app_name" >
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <activity android:name=".profilo" ></activity>
       
         <activity android:name=".riepilogo"></activity>
     
        <activity android:name=".dove"></activity>
       
       
    </application>

</manifest>


prova così
l'ho modificato direttamente dal forum quindi magari ho fatto qualche errore d sintatti
   
« Ultima modifica: 22 Luglio 2012, 10:47:50 CEST da gabric »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Ripete il package.. perchè!?!?
« Risposta #2 il: 21 Luglio 2012, 23:04:41 CEST »
0
Nel manifest il nodo

Codice (XML): [Seleziona]
    <uses-library android:name="com.google.android.maps" />
deve stare dentro <application> e non fuori ;)

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="progetto.pkg"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <uses-permission android:name="android.permission.INTERNET" />
    <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" />
   
    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name" >

        <uses-library android:name="com.google.android.maps" />
        <activity
           android:name=".main"
           android:label="@string/app_name" >
            <intent-filter/>
        </activity>
       
        <activity android:name=".profilo"
                 android:label="@string/app_name">
            <intent-filter/>
        </activity>
       
         <activity android:name=".riepilogo"
                 android:label="@string/app_name">
            <intent-filter/>
        </activity>
     
        <activity android:name=".dove"
                 android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
       
    </application>
   

</manifest>

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Ripete il package.. perchè!?!?
« Risposta #3 il: 22 Luglio 2012, 10:48:38 CEST »
0
ho modificaat il mi inserendo il tag dentro  application, dovresti direttamente poter coppiare il mio

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:Ripete il package.. perchè!?!?
« Risposta #4 il: 22 Luglio 2012, 10:56:50 CEST »
0
Penso si sia risolto quel problema, e ne è sorto un'altro.

Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY

praticamente nel logcat dice che non riesce a reperire questa libreria com.google.android.maps

in un altro post ho trovato una soluzione ma per chi non ha le API installate.. io ho tutto installato cosa cacchio è?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Ripete il package.. perchè!?!?
« Risposta #5 il: 22 Luglio 2012, 11:02:47 CEST »
0
in un altro post ho trovato una soluzione ma per chi non ha le API installate.. io ho tutto installato cosa cacchio è?

Devi sempre specificare su che versione dell'emulatore/device stai facendo le prove altrimenti si generano inutile posts dove gli utenti te lo chiedono.
Comunque, se già non lo stai facendo, devi usare un emulatore con target "Google APIs".

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:Ripete il package.. perchè!?!?
« Risposta #6 il: 22 Luglio 2012, 11:18:44 CEST »
0
Ok ragazzi era una mia distrazione, l'emulatore non aveva il target alle api :) grazie a tutti !!! topic risolto