0

구글 맵핑 api v2를 현재 개발하고있는 안드로이드 애플리케이션에서 구현하려고합니다. 자바 클래스의 경우, 탐색 서랍을 사용하고 있기 때문에 Fragment를 확장하고 있습니다.안드로이드 구글 맵스 api v2 크래쉬

문제는 다음과 같습니다. Google지도는 처음으로 탐색 창에서 클릭하려고하면 작동하지만 두 번째로 다시 클릭하면 충돌합니다. 여기

자바 클래스입니다 :

01-21 16:19:28.884: E/AndroidRuntime(10557): FATAL EXCEPTION: main 
01-21 16:19:28.884: E/AndroidRuntime(10557): Process: com.application.example, PID: 10557 
01-21 16:19:28.884: E/AndroidRuntime(10557): android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at com.application.example.FindUs_fragment.onCreateView(FindUs_fragment.java:37) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.Fragment.performCreateView(Fragment.java:1700) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.BackStackRecord.run(BackStackRecord.java:684) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.os.Handler.handleCallback(Handler.java:733) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.os.Handler.dispatchMessage(Handler.java:95) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.os.Looper.loop(Looper.java:137) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.ActivityThread.main(ActivityThread.java:4998) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at java.lang.reflect.Method.invokeNative(Native Method) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at java.lang.reflect.Method.invoke(Method.java:515) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at dalvik.system.NativeStart.main(Native Method) 
01-21 16:19:28.884: E/AndroidRuntime(10557): Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0x7f050015, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.app.Activity.onCreateView(Activity.java:4790) 
01-21 16:19:28.884: E/AndroidRuntime(10557): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689) 
: 여기
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.application.example" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

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

    <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" /> 
    <!-- The following two permissions are not required to use --> 
    <!-- Google Maps Android API v2, but are recommended. --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <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.application.example.MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <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.gms.version" 
      android:value="@integer/google_play_services_version" /> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="api key" /> 
    </application> 

</manifest> 

가 로그 캣 보고서입니다 :

여기
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <fragment 

     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
    map:cameraZoom="15"/> 

</LinearLayout> 

이 매니페스트 파일 : 여기에

public class FindUs_fragment extends Fragment{ 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View layout= (View)inflater.inflate(R.layout.map_activity, container,false); 

    return layout; 
} 

은 XML 파일입니다

앱을 중단시키는 문제가 무엇인지 알 수 있습니까?

감사합니다.

업데이트 :

@Dimmerg :

public class MainActivity extends Activity { 

    private String[] drawerListViewItems; 
    private ListView drawerListView; 
    private DrawerLayout drawerlayout; 
    private ActionBarDrawerToggle actionbardrawertoggle; 
    Fragment fragment = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     drawerListViewItems = getResources().getStringArray(R.array.drawer_item); 
     drawerListView = (ListView)findViewById(R.id.left_drawer); 

     drawerListView.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_listview_item, drawerListViewItems)); 
     drawerlayout = (DrawerLayout)findViewById(R.id.drawer_layout); 

     actionbardrawertoggle = new ActionBarDrawerToggle(
       this, 
       drawerlayout, 
       R.drawable.ic_drawer, 
       R.string.drawer_open, 
       R.string.drawer_close 
       ); 
     drawerlayout.setDrawerListener(actionbardrawertoggle); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     if (savedInstanceState == null) { 
      // on first time display view for first nav item 
      displayView(0); 
     } 
     drawerListView.setOnItemClickListener(new DrawerItemClickListener()); 



    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onPostCreate(savedInstanceState); 
     actionbardrawertoggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     // TODO Auto-generated method stub 
     super.onConfigurationChanged(newConfig); 
     actionbardrawertoggle.onConfigurationChanged(newConfig); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 

     if(actionbardrawertoggle.onOptionsItemSelected(item)) 
     { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

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

    private class DrawerItemClickListener implements ListView.OnItemClickListener 
    { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      displayView(position); 
      //drawerlayout.closeDrawer(drawerListView); 
     } 

    } 

    private void displayView(int position) 
    { 
     Fragment fragment = null; 
     switch (position) { 
     case 0: 
      fragment = new Home_fragment(); 
      break; 

     case 1: 
      fragment = new FindUs_fragment(); 
      break; 

     case 3: 
      fragment = new Facebook_fragment(); 
      break; 


     default: 
      break; 
     } 

     if (fragment != null) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.content_frame, fragment).commit(); 

      // update selected item and title, then close the drawer 
      drawerListView.setItemChecked(position, true); 
      drawerListView.setSelection(position); 
      setTitle(drawerListViewItems[position]); 
      drawerlayout.closeDrawer(drawerListView); 
     } else { 
      // error in creating fragment 
      Log.e("MainActivity", "Error in creating fragment"); 
     } 
    } 
    } 
+0

FindUs_fragment.java:37에서 37 번 라인의 코드는 무엇입니까 ?? –

+0

FindUS 단편을 활동 – Dimmerg

+0

에 연결하는 지점의 코드는 조각 내에서 맵을 원하십니까? – Raghunandan

답변

0

당신이 다시로드하기 전에 구글 맵 널 (null)을 만들 필요가 : 나는 탐색 서랍에 FindUs_fragment를 부착하고있어, 다음은 탐색 창 활동에 대한 코드입니다 그것은 .. 나를 위해 일합니다.

+0

답장을 보내 주셔서 감사 드리며,이 코드 스 니펫을 사용해 보겠습니다. 진행 상황을 알려 드리겠습니다. – Mack

관련 문제