5
android.view.InflateException: Binary XML file line #6: Error inflating class fragment 

Ich versuche, Google Map apiv2 in Fragmente nach verschiedenen Tutorials zu implementieren, ich in Fehler lief Klasse Fragment aufblasen, dann stieß ich auf verschiedene ähnliche Probleme bei stackoverflow, versucht fast alles aber das Problem bleibt bestehen. Ich bin neu bei Android, jede Art von Hinweisen sind willkommen, ich möchte Android-Entwicklung schnell lernen, aber ich bin fest. Danke im Voraus.Google Map APIv2 Implementierung, Binary XML-Datei Zeile # 6: Fehler aufblähenden Klasse Fragment

edit: Anwendung schließt unerwartet, wenn ich von Fragment 3 zu Fragment 2 gehe und Fragment 1 im Hintergrund geladen wird. Irgendwelche Ideen, um solche Probleme zu lösen?

Meine Android Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.hspot2" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="18" /> 

    <permission 
     android:name="com.example.hspot2.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <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" /> 

     <!-- Required OpenGL ES 2.0. for Maps V2 --> 
    <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" > 

     <activity 
      android:name="com.example.hspot2.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> 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyDOeSK3RC57lSdERhR0tnadCSA"/> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" 
     /> 
     </application> 

</manifest> 

Meine Haupttätigkeit, wo ich Swipe Tabs Fragmente bin der Umsetzung:

import java.util.Locale; 

import android.app.ActionBar; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.app.NavUtils; 
import android.support.v4.view.ViewPager; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity implements 
     ActionBar.TabListener { 

    SectionsPagerAdapter mSectionsPagerAdapter; 
    ViewPager mViewPager; 
    ActionBar actionBar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mViewPager = (ViewPager) findViewById(R.id.pager); 

     actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 


     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
      actionBar.addTab(actionBar.newTab() 
        .setText(mSectionsPagerAdapter.getPageTitle(i)) 
        .setTabListener(this)); 
     } 
     // When swiping between different sections, select the corresponding 
     // tab. We can also use ActionBar.Tab#select() to do this if we have 
     // a reference to the Tab. 
     mViewPager 
       .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
        @Override 
        public void onPageSelected(int position) { 
         actionBar.setSelectedNavigationItem(position); 
        } 
       }); 


    } 

    @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 onTabSelected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
     // When the given tab is selected, switch to the corresponding page in 
     // the ViewPager. 
     mViewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    /** 
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
    * one of the sections/tabs/pages. 
    */ 
    public class SectionsPagerAdapter extends FragmentStatePagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int i) { 
      Fragment fragment = null; 
      if(i==0){ 
        fragment = new FragmentA(); 

      } 
      if(i==1){ 
        fragment = new FragmentB(); 
      } 
      if(i==2){ 
        fragment = new FragmentC(); 
      } 
      return fragment; 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
      case 0: 
       return getString(R.string.title_section1).toUpperCase(l); 
      case 1: 
       return getString(R.string.title_section2).toUpperCase(l); 
      case 2: 
       return getString(R.string.title_section3).toUpperCase(l); 
      } 
      return null; 
     } 
    } 


} 

Mein fragment_a.xml, wo ich bin der Umsetzung Kartenlayout:

<?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" 
    android:background="#FFCC00" > 

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

</RelativeLayout> 

fragmentA.java Datei:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.google.android.gms.common.GooglePlayServicesNotAvailableException; 
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.MapView; 
import com.google.android.gms.maps.MapsInitializer; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class FragmentA extends Fragment{ 

    static final LatLng HAMBURG = new LatLng(53.558, 9.927); 
    GoogleMap map; 
    MapView mapView; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_a, container, false); 
     map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map1)).getMap(); 
     return v; 
    } 

} 
+0

versuchen Sie es mit getChildFragmentManager() in der fragmenta –

+0

Danke für den Hinweis, habe ich wie oben onCreateview und umgesetzt onActivityCreated mit getChildFragmentManager(), aber Ausgabe noch bestehen. – Harshit

+0

Haben Sie das herausgefunden? Ich habe das gleiche Problem. – javydreamercsw

Antwort

0

Versuchen Sie folgende Lösung, die wie ein Charme funktioniert. Zur

1) in XML-Datei und schreibt wie folgt:

<fragment 
     android:id="@+id/citymap" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 

2) Nun zu Ihrer Aktivität gehen und Änderungen wie folgt:

=> auf geeignete Methode gehen und kopiert Code unten,

FragmentManager myFragmentManager = getChildFragmentManager(); 
      SupportMapFragment mySupportMapFragment 
       =(SupportMapFragment)myFragmentManager.findFragmentById(R.id.citymap); 
      GoogleMap googlemap=mySupportMapFragment.getMap();