2017-03-25 1 views
0

에 나는이 레이아웃 활동과 함께 일하고 있어요 : 내가있을 때로드 조각은 두 번 활동

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

    ... 


<LinearLayout android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rcyViatgesDetall" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="3"/> 

<FrameLayout 
    android:id="@+id/viatge_detail_container" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="6" 
    /> 
이전에 iIwant 언급 한 내 활동에 대한 사용자 정의 재활용보기 어댑터의 내부

이 조각을 충전 내 요소 중 하나를 클릭, 예 :

holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

        ViatgeDetallViewFragment fragment = new ViatgeDetallViewFragment(); 
        //fragment.setArguments(arguments); 
        mActivity.getSupportFragmentManager().beginTransaction() 
          .replace(R.id.viatge_detail_container, fragment) 
          .commit(); 

그리고 이것은 내 조각 클래스입니다 :

public class ViatgeDetallViewFragment extends Fragment implements OnMapReadyCallback { 

    public static final String ARG_ID = "id"; 
    private GoogleMap mMap; 
    private Marker mMarcadorActual; 
    private static final int CODI_PETICIO_PERMIS_GPS = 13; 

    public ViatgeDetallViewFragment() { 
    } 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 


    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_view, container, false); 


     MapFragment mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.fragment_view_map); //esto funciona 
     mapFragment.getMapAsync(this); 


     return rootView; 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 


     if (ActivityCompat.checkSelfPermission(this.getContext(), //solo this 
       Manifest.permission.ACCESS_FINE_LOCATION) != 
       PackageManager.PERMISSION_GRANTED && 
       ActivityCompat.checkSelfPermission(this.getContext(), //solo this 
         Manifest.permission.ACCESS_COARSE_LOCATION) 
         != PackageManager.PERMISSION_GRANTED) { 
      // NO tinc permisos, en demano 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       requestPermissions(
         new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, CODI_PETICIO_PERMIS_GPS); 
      } 
     } else { 
      mMap.setMyLocationEnabled(true); 
     } 



..... 

    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, 
              @NonNull String[] permissions, 
              @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     if(grantResults[0]==PackageManager.PERMISSION_GRANTED) { 

      try { 
       mMap.setMyLocationEnabled(true); 
      }catch(SecurityException ex) { 

      } 
     } 
    } 
} 
이 조각은 또한 당신이 레이아웃의에서 볼 수 있듯이, Google지도 조각을로드

: 내가 두 번째로 누를 때

<LinearLayout android:id="@+id/layout_fragment_view" xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

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

</LinearLayout> 

나는 항목 모두에서 처음으로 탭

확인을 간다,하지만 다른 항목에서이 오류가 발생합니다.

FATAL EXCEPTION: main Process: com.example.usuari.myapplication3, PID: 31870 android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class fragment at android.view.LayoutInflater.inflate(LayoutInflater.java:551) at android.view.LayoutInflater.inflate(LayoutInflater.java:429) at com.example.usuari.myapplication3.ViatgeDetallViewFragment.onCreateView(ViatgeDetallViewFragment.java:73) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) at android.view.LayoutInflater.inflate(LayoutInflater.java:527) at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  at com.example.usuari.myapplication3.ViatgeDetallViewFragment.onCreateView(ViatgeDetallViewFragment.java:73)  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)  at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)  at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)  at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)  at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:158)  at android.app.ActivityThread.main(ActivityThread.java:7229)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  Caused by: java.lang.IllegalArgumentException: Binary XML file line

18: Duplicate id 0x7f0d00a9, tag null, or parent id 0x7f0d00a7 with another fragment for com.google.android.gms.maps.MapFragment

                    at 

android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2222) at android.app.FragmentController.onCreateView(FragmentController.java:98) at android.app.Activity.onCreateView(Activity.java:6070) at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)  at android.view.LayoutInflater.inflate(LayoutInflater.java:527)  at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  at com.example.usuari.myapplication3.ViatgeDetallViewFragment.onCreateView(ViatgeDetallViewFragment.java:73)  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)  at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)  at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)  at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)  at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:158)  at android.app.ActivityThread.main(ActivityThread.java:7229)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

답변

0

지도 조각을 동적으로 팽창 시키려고 했습니까?

조각에 // 조각 />이 포함되어 있으면 조각을 펼칠 수 없습니다. 중첩 된 조각은 조각에 동적으로 추가 될 때만 지원됩니다.

Fragments within Fragments

+0

에 오신 것을 환영합니다 [스택 오버플로]로 (http://stackoverflow.com/)! [좋은 답변을 어떻게 작성합니까?] (http://stackoverflow.com/help/how-to-answer)를 읽어주십시오. –