Autore Topic: ERRORE FRAGMENT + GOOGLE MAPS V2  (Letto 722 volte)

Offline Gargano10041983

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 7
  • Sistema operativo:
    Windows 7
ERRORE FRAGMENT + GOOGLE MAPS V2
« il: 27 Agosto 2014, 17:41:35 CEST »
0
Ciao a tutti,
spero possiate aiutarmi a risolvere il problema in oggetto...in sostanza vorrei semplicemente riuscire a visualizzare la mappa di google ed ovviamente riuscire successivamente anche ad utilizzarla...purtroppo quando eseguo l'app tramite emulatore il tutto crasha e chiude in automatico l'app avviata.

Mi sono accorto che eliminando l'elemento <fragment> dalla View questo problema scompare ma così facendo non riesco a richiamare la mappa (al momento non so se ci sia un altro modo).

Intanto di seguito inserisco il codice relativo al mio file xml per la View:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >

        <LinearLayout android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"
       android:padding="10dip">

        <Button android:id="@+id/btnLatLong"
                android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:text="Ricevi"
           android:textStyle="bold"
           android:onClick="clickbuttonLatLong" />

    <TextView android:id="@+id/texts"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
               
    <fragment android:id="@+id/map"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:name="com.google.android.gms.maps.SupportMapFragment" />

        </LinearLayout>

</ScrollView>

Ecco di seguito il codice relativo al mio file java che esegue l'activity principale:
Codice (Java): [Seleziona]
package com.example.locationtests;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;

public class MainActivity extends FragmentActivity {

        private final Context GPScontext = this;
        private GoogleMap googleMap;
        TextView text;
        Button btnLatLong;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            text = (TextView) findViewById(R.id.texts);
            btnLatLong = (Button) findViewById(R.id.btnLatLong);
           
            btnLatLong.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                        GPSTracker mGPS = new GPSTracker(GPScontext);
                    if(mGPS.canGetLocation ){
                        mGPS.getLocation();
                        text.setText("Lat"+mGPS.getLatitude()+"Lon"+mGPS.getLongitude());
                        /*LatLng TutorialsPoint = new LatLng(42.4707653,14.2083113);
                        googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
                        googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(TutorialsPoint, 5));*/

                    }else{
                        text.setText("Unabletofind");
                        System.out.println("Unable");
                    }
                }
            });
           
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }

}

E di seguito il codice relativo al manifest.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.locationtests"
   android:versionCode="1"
   android:versionName="1.0" >
       
        <permission
     android:name="com.example.googlemaps.permission.MAPS_RECEIVE"
     android:protectionLevel="signature" />
       
    <uses-sdk
       android:minSdkVersion="12"
       android:targetSdkVersion="19" />
   
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <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_WIFI_STATE" />
   
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>

    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme"
       android:hardwareAccelerated="true" >
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_VALUE_KEY"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
        <activity
           android:name="com.example.locationtests.MainActivity"
           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>

Ho fatto vari tentativi e ho già provato a seguire alcune indicazioni presenti su svariati forum...ma senza successo.

Di seguito provo a passarvi anche quanto riportato nel "LogCat":
Codice: [Seleziona]
08-27 15:28:47.809: E/dalvikvm(625): Could not find class 'com.google.android.gms.maps.SupportMapFragment', referenced from method com.example.locationtests.MainActivity.onCreate
08-27 15:28:48.479: E/AndroidRuntime(625): FATAL EXCEPTION: main
08-27 15:28:48.479: E/AndroidRuntime(625): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.locationtests/com.example.locationtests.MainActivity}: android.view.InflateException: Binary XML file line #23: Error inflating class fragment
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.os.Handler.dispatchMessage(Handler.java:99)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.os.Looper.loop(Looper.java:137)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.ActivityThread.main(ActivityThread.java:4424)
08-27 15:28:48.479: E/AndroidRuntime(625):         at java.lang.reflect.Method.invokeNative(Native Method)
08-27 15:28:48.479: E/AndroidRuntime(625):         at java.lang.reflect.Method.invoke(Method.java:511)
08-27 15:28:48.479: E/AndroidRuntime(625):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-27 15:28:48.479: E/AndroidRuntime(625):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-27 15:28:48.479: E/AndroidRuntime(625):         at dalvik.system.NativeStart.main(Native Method)
08-27 15:28:48.479: E/AndroidRuntime(625): Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class fragment
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
08-27 15:28:48.479: E/AndroidRuntime(625):         at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.Activity.setContentView(Activity.java:1835)
08-27 15:28:48.479: E/AndroidRuntime(625):         at com.example.locationtests.MainActivity.onCreate(MainActivity.java:57)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.Activity.performCreate(Activity.java:4465)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
08-27 15:28:48.479: E/AndroidRuntime(625):         ... 11 more
08-27 15:28:48.479: E/AndroidRuntime(625): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment: make sure class name exists, is public, and has an empty constructor that is public
08-27 15:28:48.479: E/AndroidRuntime(625):         at android.support.v4.app.Fragment.instantiate(Fragment.java:395)

Spero che qualcuno abbia veramente una valida soluzione al mio problema.

Vi ringrazio in anticipo.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #1 il: 27 Agosto 2014, 19:49:51 CEST »
0
Hai usato un emulatore con le google api vero??

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Gargano10041983

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 7
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #2 il: 27 Agosto 2014, 21:01:56 CEST »
0
Ciao Nicola_D,
grazie intanto per l'interessamento...cmq in allegato passo lo screen delle impostazioni dell'emulatore che utilizzo per far partire l'applicazione.


Vuoi dirmi che sarebbe il caso di creare il file eseguibile APK e far partire l'app direttamente da un telefono android???

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #3 il: 27 Agosto 2014, 21:11:58 CEST »
0
Sembrerebbe ok, sono dal cell e non riesco a controllare il codice... Attacca il telefono in debug e prova li!

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Gargano10041983

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 7
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #4 il: 27 Agosto 2014, 21:20:32 CEST »
0
Ho già provato in debug e ho notato che va in errore all'altezza delle seguente istruzione:
Codice (Java): [Seleziona]
setContentView(R.layout.activity_main);
presente all'interno della funzione principale:
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState)

Se elimino l'elemento "fragment" dall'xml tutto torna ok ma poi ovviamente non so come richiamare la mappa di google....

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #5 il: 27 Agosto 2014, 21:34:29 CEST »
0
Ma google map ha un id e te non lo richiami

Offline Gargano10041983

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 7
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #6 il: 27 Agosto 2014, 21:39:53 CEST »
0
Ciao tonno16,
sicuramente sbaglio qualcosa...ma x quello che so...l'id non devo richiamarlo semplicemente all'interno del file manifest?

Ovviamente io l'ho creato questo id e l'ho inserito dove attualmente nel mio file manifest in questo punto:
Codice (XML): [Seleziona]
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_VALUE_KEY"/>al posto di MY_VALUE_KEY...mi sfugge qualcosa???

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #7 il: 27 Agosto 2014, 23:04:38 CEST »
0
Mi pare di vedere che nellxml usi support map fragment mentre nel codice usi mapfragment, corrreggi questa cosa

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Gargano10041983

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 7
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #8 il: 28 Agosto 2014, 07:35:21 CEST »
0
Nel codice che ho postato probabilmente è un refuso dovuto ai diversi tentativi che ho fatto...cmq posso assicurare che ho provato ad utilizzare entrambi ma ottenendo sempre il solito risultato...in realtà sto pensando di scaricare il codice di qualche tutorial che è ritenuto valido e di farlo girare con l'emulatore e se dovessi ottenere sempre lo stesso risultato allora di farlo girare su un dispositivo reale...sperando così di andare x esclusione e capire se il problema può essere soltanto l'emulatore...

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ERRORE FRAGMENT + GOOGLE MAPS V2
« Risposta #9 il: 28 Agosto 2014, 11:01:43 CEST »
0
allora prendi gli esempi ufficiali, non ricordo se sono nell'sdk o vanno scaricati da internet, ma ci sono e pronti per Android Studio
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia