2015-05-13 63 views
3

我有一個活動和幾個片段。我必須在FrameLayout中替換片段。但是,當我使用這個功能我的應用程序崩潰。 這裏是功能使用替換時FragmentManager崩潰

Android.Support.V4.App.Fragment fragment = null; 
     switch (position) { 
     case 0: 
      fragment = new ScheduleFragment(); 
      break; 
     case 1: 
      fragment = new MainFragment(); 
      break; 
     } 
     if (fragment != null) { 

      Android.Support.V4.App.FragmentManager fragmentManager = SupportFragmentManager; 
      var transaction = fragmentManager.BeginTransaction(); 
      transaction.Replace(Resource.Id.content_frame, fragment); 
      transaction.Commit(); 

      mDrawerList.SetItemChecked (position, true); 
      SetTitle (mScreenTitles [position]); 
      mDrawerLayout.CloseDrawer (mDrawerList); 
     } else { 
      Log.Error (this.Class.Name, "Error, fragment not created"); 
     } 

的代碼,這裏是一個錯誤:

Java.Lang.RuntimeException: java.lang.reflect.InvocationTargetException at --- End of managed exception stack trace --- at java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) at Caused by: java.lang.reflect.InvocationTargetException at at java.lang.reflect.Method.invoke(Native Method) at at java.lang.reflect.Method.invoke(Method.java:372) at at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at ... 1 more at Caused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.TypeLoadException: Could not load type 'Android.OS.BaseBundle' from assembly 'Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'. at Android.Views.View.n_OnSaveInstanceState (intptr,intptr) [0x00009] in /Users/builder/data/lanes/monodroid-mavericks-monodroid-5.1-series/d23da369/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.Views.View.cs:14822 at at (wrapper dynamic-method) object.e0a03ea8-44fe-4482-bf92-bc99edac0352 (intptr,intptr) at at md5d7f0962782a324dbc9992a12c8322ca0.PagerSlidingTabStrip.n_onSaveInstanceState(Native Method) at at md5d7f0962782a324dbc9992a12c8322ca0.PagerSlidingTabStrip.onSaveInstanceState(PagerSlidingTabStrip.java:86) at at android.view.View.dispatchSaveInstanceState(View.java:13550) at at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2859) at at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2865) at at android.view.View.saveHierarchyState(View.java:13533) at at android.support.v4.app.FragmentManagerImpl.saveFragmentViewState(FragmentManager.java:1639) at at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1023) at at android.support.v4.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1233) at at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:696) at at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499) at at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:456) at at android.os.Handler.handleCallback(Handler.java:739) at at android.os.Handler.dispatchMessage(Handler.java:95) at at android.os.Looper.loop(Looper.java:135) at at android.app.ActivityThread.main(ActivityThread.java:5221) at ... 4 more

佈局。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/gradientshape"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <TextView 
      android:text="УНИИ-ИТ, 1 курс, 11 - ПГ" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/info" 
      android:textColor="#ffffffff" 
      android:gravity="center_horizontal" /> 
     <TextView 
      android:text="понедельник, 11 мая" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/dayOfMonth" 
      android:textColor="#ffffffff" 
      android:gravity="center" /> 
     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#00000000" 
      android:fadingEdge="vertical" /> 
    </LinearLayout> 
    <ListView 
     android:id="@+id/left_drawer" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:choiceMode="singleChoice" 
     android:layout_width="220dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#111" /> 
</android.support.v4.widget.DrawerLayout> 

另外我加載片段的片段佈局在viewPager中。 這是它:

<ListView 
    android:minWidth="25px" 
    android:minHeight="25px" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/LessonsView" 
    android:layout_marginLeft="5dp" 
    android:padding="15dp" 
    android:divider="@null" 
    android:dividerHeight="0dp" 
    android:layout_marginTop="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginBottom="5dp" /> 

和ViewPager中的ListView項目的佈局。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="1dp" 
    android:layout_marginTop="5dp"> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="0.0dp" 
     android:background="@drawable/border"> 
     <TextView 
      android:text=" 1" 
      android:id="@+id/PairNumber" 
      android:layout_width="35.5dp" 
      android:layout_height="wrap_content" 
      android:gravity="top" 
      android:background="@drawable/triangle" 
      android:alpha="0.8" 
      android:layout_gravity="left" 
      android:textColor="#ff000000" 
      android:textAlignment="center" /> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:text="Инновационный менеджмент и развитие информационных технологий" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/pairTitle" 
       android:layout_marginTop="7dp" 
       android:textColor="#ff000000" /> 
      <TextView 
       android:text="Лекция" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/pairType" 
       android:layout_marginTop="2dp" 
       android:textColor="#ff949494" /> 
     </LinearLayout> 
    </LinearLayout> 
    <View 
     android:padding="5dp" 
     android:layout_width="fill_parent" 
     android:layout_height="0.5dp" 
     android:background="#ffe5e8ea" 
     android:alpha="1" /> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:divider="?android:dividerHorizontal" 
     android:minWidth="45px" 
     android:minHeight="115px" 
     android:background="#ffffff" 
     android:paddingRight="2dp" 
     android:paddingLeft="2dp" 
     android:paddingTop="-1dp"> 
     <ImageView 
      android:src="@drawable/icon_teacher" 
      android:layout_width="35.5dp" 
      android:layout_height="match_parent" 
      android:id="@+id/imageView1" 
      android:scaleType="center" 
      android:layout_weight="0" 
      android:adjustViewBounds="false" 
      android:cropToPadding="false" 
      android:layout_marginTop="2dp" /> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="#ffffff" 
      android:layout_gravity="center"> 
      <TextView 
       android:text="Миленко" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/Teacher" 
       android:textColor="#ff000000" 
       android:layout_gravity="center" /> 
     </LinearLayout> 
    </LinearLayout> 
    <View 
     android:layout_width="fill_parent" 
     android:layout_height="0.5dp" 
     android:background="#ffe5e8ea" 
     android:alpha="1" /> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:divider="?android:dividerHorizontal" 
     android:minWidth="45px" 
     android:minHeight="115px" 
     android:background="#ffffff" 
     android:paddingRight="2dp" 
     android:paddingLeft="2dp"> 
     <ImageView 
      android:src="@drawable/icon_place" 
      android:layout_width="35.5dp" 
      android:layout_height="match_parent" 
      android:id="@+id/imageView1" 
      android:scaleType="center" 
      android:layout_weight="0" 
      android:adjustViewBounds="false" 
      android:cropToPadding="false" 
      android:layout_marginTop="1dp" /> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:layout_gravity="center"> 
      <TextView 
       android:text="Корпус:1, Аудитория 314" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/pairPlace" 
       android:layout_gravity="center" 
       android:gravity="left" 
       android:textColor="#ff000000" /> 
     </LinearLayout> 
    </LinearLayout> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="4" 
     android:minWidth="45px" 
     android:minHeight="45px"> 
     <TextView 
      android:text="20:15-21:45" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="35dp" 
      android:id="@+id/pairTime" 
      android:layout_weight="3" 
      android:background="@drawable/timebackground" 
      android:gravity="center" 
      android:layout_gravity="top" 
      android:textColor="#ff000000" /> 
     <Button 
      android:text="Напоминать" 
      android:layout_width="wrap_content" 
      android:layout_height="35dp" 
      android:gravity="center" 
      android:id="@+id/NotifyBtn" 
      android:layout_weight="1" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:background="@drawable/buttonbackground" 
      android:textColor="#ffffffff" 
      android:layout_gravity="right" 
      android:drawableRight="@drawable/button_notify_inactive" 
      android:textSize="12dp" 
      android:alpha="0.9" /> 
    </LinearLayout> 
</LinearLayout> 
+0

請問您能否包含佈局xml代碼? – matthewrdev

+0

@MattR,添加viewPager適配器,viewPager片段,列表視圖中項目的主佈局和佈局,這是viewpager的片段 – AsTex

回答

0

我不能肯定在此基礎上snipit,但如果你試圖訪問一個Android資源ID如前面提到的人,你需要在Xamarin使用Android.Resource.Id。

如果這不是你想要的,我會問你是否在你想要的容器中有一個FrameLayout,其ID爲content_frame。

我設計了我的佈局,幷包含一個FrameLayout,這是我使用SupportFragmentManager切入和切出的。

0
Android.Support.V4.App.Fragment fragment = null; 
    switch (position) { 
    case 0: 
     fragment = new ScheduleFragment(); 
     break; 
    case 1: 
     fragment = new MainFragment(); 
     break; 
    } 
    if (fragment != null) { 

     Android.Support.V4.App.FragmentManager fragmentManager = SupportFragmentManager; 
     var transaction = fragmentManager.BeginTransaction(); 
     // ---- change this line ---- // 
     transaction.Replace(R.id.content_frame, fragment); 
     transaction.Commit(); 

     mDrawerList.SetItemChecked (position, true); 
     SetTitle (mScreenTitles [position]); 
     mDrawerLayout.CloseDrawer (mDrawerList); 
    } else { 
     Log.Error (this.Class.Name, "Error, fragment not created"); 
    } 
+1

您的意思是Resource.Id.content_frame?我使用Xamarin.Android。 Resource.id == R.id – AsTex

+0

向下投票,因爲它不清楚該修復程序是什麼。你能補充一些進一步的解釋嗎? – matthewrdev