Autore Topic: Aiuto Error Inflating Class Fragment e Google Maps API V2  (Letto 1274 volte)

Offline voorhees

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Windows 7/8, Ubuntu
Aiuto Error Inflating Class Fragment e Google Maps API V2
« il: 20 Novembre 2013, 20:02:40 CET »
0
Salve ragazzi ho i problemi relativi al titolo...
Vi incollo il Main della mia applicazione e il manifest:

MainActivity.java
Codice (Java): [Seleziona]
package com.app.parkingfinder;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Locale;

import com.app.parkingfinder.TopFragment.onSelectionListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements onSelectionListener {
       
        private String date;
        private String coord;
        private Button saveData;
        private String[] scelta = new String[4];

       
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
       
        saveData = (Button)findViewById(R.id.saveDataButton);
        saveData.setEnabled(false);
       
                saveData.setOnClickListener(new OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                saveDataonFile();
                               
                        }
                       
                });
       
    }


    @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;
    }


   
        @Override
        public void sendCoord(String provider, double longitude, double latitude,
                        double altitude, float accuracy) {
                // TODO Auto-generated method stub
               
                Calendar cal = Calendar.getInstance();
                SimpleDateFormat simple = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",Locale.ITALIAN);
                date = simple.format(cal.getTime());
                coord = longitude + "_" + latitude + "_" + altitude;
               
                CentralFragment centralFragment = (CentralFragment)getSupportFragmentManager().findFragmentById(R.id.centralfrag);
                centralFragment.showDetails(date, provider, longitude, latitude, altitude, accuracy);
               
                showMap(latitude,longitude);
               
                saveData.setEnabled(true);
        }
       
       

        private void saveDataonFile() {
        // TODO Auto-generated method stub
                FileOutputStream fout = null;
                OutputStreamWriter osw = null;
               
                try {
                        fout = openFileOutput("coordinate.csv",MODE_PRIVATE|MODE_APPEND);  //fa l'append sulla stessa riga
                        osw = new OutputStreamWriter(fout);
                        osw.write(date + "_" + coord + "\r\n");
                        Toast.makeText(this, "Dati Salvati", Toast.LENGTH_SHORT).show();
                       
                } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Toast.makeText(this, "File non trovato", Toast.LENGTH_SHORT).show();
                       
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Toast.makeText(this, "Dati non salvati", Toast.LENGTH_SHORT).show();
                       
                } finally{
                        try {
                                osw.flush();
                                osw.close();
                                fout.close();
                               
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
               
                saveData.setEnabled(false);

               
        }
       
       
       
        public void loadOldPosition(ArrayList<String> oldPositions){
                final ArrayList<String[]> singlePos = new ArrayList<String[]>();
               
                for(int i=0; i<oldPositions.size(); i++){
                        String[] pos = oldPositions.get(i).split("_");
                        singlePos.add(pos);
                }
               
                String[] title = new String[singlePos.size()];
               
                for(int i=0; i<singlePos.size(); i++){
                        title[i] = (singlePos.get(i))[0];
                }
                               
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Scegli Posizione");
                builder.setItems(title, new DialogInterface.OnClickListener() {
                       
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                scelta = singlePos.get(which);
                                dialog.dismiss();
                        }
                });
               
                //per utilizzare questa funzione il min SDK deve essere 17 (Jelly Bean)
                builder.setOnDismissListener(new OnDismissListener(){  

                        @Override
                        public void onDismiss(DialogInterface dialog) {
                                // TODO Auto-generated method stub
                                CentralFragment centralFragment = (CentralFragment)getSupportFragmentManager().findFragmentById(R.id.centralfrag);
                                centralFragment.showLoadedDetails(scelta);
                                double latitude = Double.parseDouble(scelta[2]);
                                double longitude = Double.parseDouble(scelta[1]);
                                showMap(latitude,longitude);
                               
                        }
                       
                });
               
                builder.show();
               
        }
       
       
        private void showMap(double latitude, double longitude){
                LatLng starting_point = new LatLng(latitude, longitude);
                GoogleMap map=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
                   map.moveCamera(CameraUpdateFactory.newLatLngZoom(starting_point, 5));
        }
   
}


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

    <permission
              android:name="example.gps.permission.MAPS_RECEIVE"
              android:protectionLevel="signature"/>
   
    <uses-sdk
       android:minSdkVersion="17"
       android:targetSdkVersion="19" />
   
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
   
    <!-- PERMESSI PER USARE LA LOCALIZZAZIONE E MAPS-->
    <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
       
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_VALUE"/>
       
        <activity
           android:name="com.app.parkingfinder.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>


activity_main2.xml
Codice (XML): [Seleziona]
<LinearLayout 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"
   android:orientation="vertical"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

    <fragment
       android:id="@+id/topfrag"
       android:name="com.app.parkingfinder.TopFragment"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       tools:layout="@layout/topfragment" />

    <fragment
       android:id="@+id/centralfrag"
       android:name="com.app.parkingfinder.CentralFragment"
       android:layout_width="288dp"
       android:layout_height="80dp"
       tools:layout="@layout/centralfragment" />

    <fragment
       android:id="@+id/map"
       android:layout_width="match_parent"
       android:layout_height="244dp"
       class="com.google.android.gms.maps.SupportMapFragment" />

    <Button
       android:id="@+id/saveDataButton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="Salva Dati"
       android:textSize="@dimen/font_size" />

</LinearLayout>


LogCat
Codice: [Seleziona]
11-20 19:38:23.564: E/AndroidRuntime(11851): FATAL EXCEPTION: main
11-20 19:38:23.564: E/AndroidRuntime(11851): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.parkingfinder/com.app.parkingfinder.MainActivity}: android.view.InflateException: Binary XML file line #27: Error inflating class fragment
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2350)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2400)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.ActivityThread.access$600(ActivityThread.java:153)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.os.Handler.dispatchMessage(Handler.java:99)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.os.Looper.loop(Looper.java:137)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.ActivityThread.main(ActivityThread.java:5295)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at java.lang.reflect.Method.invokeNative(Native Method)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at java.lang.reflect.Method.invoke(Method.java:525)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at dalvik.system.NativeStart.main(Native Method)
11-20 19:38:23.564: E/AndroidRuntime(11851): Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class fragment
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:320)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.Activity.setContentView(Activity.java:1913)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.app.parkingfinder.MainActivity.onCreate(MainActivity.java:40)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.Activity.performCreate(Activity.java:5271)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304)
11-20 19:38:23.564: E/AndroidRuntime(11851):         ... 11 more
11-20 19:38:23.564: E/AndroidRuntime(11851): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4030500 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.maps.internal.q.v(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.maps.internal.q.u(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.maps.SupportMapFragment$b.cE(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.maps.SupportMapFragment$b.a(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.dynamic.a.a(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:290)
11-20 19:38:23.564: E/AndroidRuntime(11851):         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
11-20 19:38:23.564: E/AndroidRuntime(11851):         ... 21 more

Aiutatemi...non so più cosa fare...sono disperato!
Grazie

Post unito: 21 Novembre 2013, 10:34:10 CET
Risolto utilizzando questa guida: https://blog-emildesign.rhcloud.com/?p=435
seguendola alla lettere e inserendo nel manifest tutto quello che dice!
Secondo me la miglior guida!  ;-)
« Ultima modifica: 21 Novembre 2013, 10:34:10 CET da voorhees, Reason: Merged DoublePost »