FragmentManager使用替换时崩溃 [英] FragmentManager crashes when using Replace
问题描述
我有一个活动,一些碎片。我在的FrameLayout取代片段。但是,当我使用这个功能,我的应用程序崩溃。
下面是功能code
Android.Support.V4.App.Fragment片段= NULL;
开关(位置){
情况下0:
片段=新ScheduleFragment();
打破;
情况1:
片段=新MainFragment();
打破;
}
如果(片段!= NULL){ Android.Support.V4.App.FragmentManager fragmentManager = SupportFragmentManager;
变种事务= fragmentManager.BeginTransaction();
transaction.Replace(Resource.Id.content_frame,片段);
器transaction.commit(); mDrawerList.SetItemChecked(位置,真正的);
的setTitle(mScreenTitles [位置]);
mDrawerLayout.CloseDrawer(mDrawerList);
}其他{
Log.Error(this.Class.Name,错误,不片段创建);
}
这是错误的:
了java.lang.RuntimeException:java.lang.reflect.InvocationTargetException在管理---结束
异常堆栈跟踪---在了java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException在在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)在致
由:java.lang.reflect.InvocationTargetException在在
java.lang.reflect.Method.invoke(本机方法)留在
java.lang.reflect.Method.invoke(Method.java:372)留在
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)
在... 1个在致:
md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable:
System.TypeLoadException:未能加载类型'Android.OS.BaseBundle
从程序集Mono.Android,版本= 0.0.0.0,文化=中立,
公钥= 84e04ff9cfb79065。在
Android.Views.View.n_OnSaveInstanceState(IntPtr的,IntPtr的)[0x00009]中
/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
在在(包装动态法)
object.e0a03ea8-44fe-4482-bf92-bc99edac0352(IntPtr的,IntPtr的)留在
md5d7f0962782a324dbc9992a12c8322ca0.PagerSlidingTabStrip.n_onSaveInstanceState(母语
法)在在
md5d7f0962782a324dbc9992a12c8322ca0.PagerSlidingTabStrip.onSaveInstanceState(PagerSlidingTabStrip.java:86)
在在android.view.View.dispatchSaveInstanceState(View.java:13550)在
在
android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2859)
在处
android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2865)
在在android.view.View.saveHierarchyState(View.java:13533)留在
android.support.v4.app.FragmentManagerImpl.saveFragmentViewState(FragmentManager.java:1639)
在处
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1023)
在处
android.support.v4.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1233)
在处
android.support.v4.app.BackStackRecord.run(BackStackRecord.java:696)
在处
android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
在处
android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:456)
在在android.os.Handler.handleCallback(Handler.java:739)留在
android.os.Handler.dispatchMessage(Handler.java:95)留在
android.os.Looper.loop(Looper.java:135)留在
android.app.ActivityThread.main(ActivityThread.java:5221)在4 ...
更多
块引用>布局。
<?XML版本=1.0编码=UTF-8&GT?;
< android.support.v4.widget.DrawerLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / drawer_layout
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:背景=@绘制/ gradientshape>
<的LinearLayout
机器人:方向=垂直
机器人:layout_width =match_parent
机器人:layout_height =match_parent>
<的TextView
机器人:文字=УНИИ-ИТ,1курс,11 - ПГ
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID /信息
机器人:文字颜色=#FFFFFFFF
机器人:重力=CENTER_HORIZONTAL/>
<的TextView
机器人:文字=понедельник,11мая
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID /请将dayOfMonth
机器人:文字颜色=#FFFFFFFF
机器人:比重=中心/>
< android.support.v4.view.ViewPager
机器人:ID =@ + ID /寻呼机
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:背景=#00000000
机器人:fadingEdge =垂直/>
< / LinearLayout中>
< ListView控件
机器人:ID =@ + ID / left_drawer
机器人:分=@机器人:彩色/透明
机器人:dividerHeight =0dp
机器人:choiceMode =singleChoice
机器人:layout_width =220DP
机器人:layout_height =match_parent
机器人:layout_gravity =开始
机器人:背景=#111/>
< /android.support.v4.widget.DrawerLayout>此外,我加载在viewPager片段片段布局。
这里是:< ListView控件
安卓了minWidth =25像素
安卓了minHeight =25像素
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:ID =@ + ID / LessonsView
机器人:layout_marginLeft =5DP
机器人:填充=15dp
机器人:分=@空
机器人:dividerHeight =0dp
机器人:layout_marginTop =5DP
机器人:layout_marginRight =5DP
机器人:layout_marginBottom =5DP/>而在ViewPager的ListView的项目布局。
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:填充=1DP
机器人:layout_marginTop =5DP>
<的LinearLayout
机器人:方向=横向
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
安卓了minWidth =25像素
安卓了minHeight =25像素
机器人:layout_marginTop =5DP
机器人:layout_marginBottom =0.0dp
机器人:背景=@绘制/边框>
<的TextView
机器人:文字=1
机器人:ID =@ + ID / PairNumber
机器人:layout_width =35.5dp
机器人:layout_height =WRAP_CONTENT
机器人:重力=顶
机器人:背景=@绘制/三角
机器人:阿尔法=0.8
机器人:layout_gravity =左
机器人:文字颜色=#FF000000
机器人:textAlignment =中心/>
<的LinearLayout
机器人:方向=垂直
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT>
<的TextView
机器人:文字=Инновационныйменеджментиразвитиеинформационныхтехнологий
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / pairTitle
机器人:layout_marginTop =7DP
机器人:文字颜色=#FF000000/>
<的TextView
机器人:文字=Лекция
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / pairType
机器人:layout_marginTop =2DP
机器人:文字颜色=#ff949494/>
< / LinearLayout中>
< / LinearLayout中>
<查看
机器人:填充=5DP
机器人:layout_width =FILL_PARENT
机器人:layout_height =0.5dp
机器人:背景=#ffe5e8ea
机器人:阿尔法=1/>
<的LinearLayout
机器人:方向=横向
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:分=?机器人:dividerHorizontal
安卓了minWidth =×45像素
安卓了minHeight =115px
机器人:背景=#FFFFFF
机器人:paddingRight =2DP
机器人:paddingLeft =2DP
机器人:paddingTop = - 1DP>
< ImageView的
机器人:SRC =@绘制/ icon_teacher
机器人:layout_width =35.5dp
机器人:layout_height =match_parent
机器人:ID =@ + ID / imageView1
机器人:scaleType =中心
机器人:layout_weight =0
机器人:adjustViewBounds =假
机器人:cropToPadding =假
机器人:layout_marginTop =2DP/>
<的LinearLayout
机器人:方向=垂直
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_weight =1
机器人:背景=#FFFFFF
机器人:layout_gravity =中心>
<的TextView
机器人:文字=Миленко
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID /教师
机器人:文字颜色=#FF000000
机器人:layout_gravity =中心/>
< / LinearLayout中>
< / LinearLayout中>
<查看
机器人:layout_width =FILL_PARENT
机器人:layout_height =0.5dp
机器人:背景=#ffe5e8ea
机器人:阿尔法=1/>
<的LinearLayout
机器人:方向=横向
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:分=?机器人:dividerHorizontal
安卓了minWidth =×45像素
安卓了minHeight =115px
机器人:背景=#FFFFFF
机器人:paddingRight =2DP
机器人:paddingLeft =2DP>
< ImageView的
机器人:SRC =@绘制/ icon_place
机器人:layout_width =35.5dp
机器人:layout_height =match_parent
机器人:ID =@ + ID / imageView1
机器人:scaleType =中心
机器人:layout_weight =0
机器人:adjustViewBounds =假
机器人:cropToPadding =假
机器人:layout_marginTop =1DP/>
<的LinearLayout
机器人:方向=垂直
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_weight =1
机器人:layout_gravity =中心>
<的TextView
机器人:文字=Корпус:1,Аудитория314
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / pairPlace
机器人:layout_gravity =中心
机器人:重力=左
机器人:文字颜色=#FF000000/>
< / LinearLayout中>
< / LinearLayout中>
<的LinearLayout
机器人:方向=横向
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:weightSum =4
安卓了minWidth =×45像素
安卓了minHeight =×45像素>
<的TextView
机器人:文字=20:15-21:45
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =35dp
机器人:ID =@ + ID / pairTime
机器人:layout_weight =3
机器人:背景=@绘制/ timebackground
机器人:比重=中心
机器人:layout_gravity =顶
机器人:文字颜色=#FF000000/>
<按钮
机器人:文字=Напоминать
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =35dp
机器人:比重=中心
机器人:ID =@ + ID / NotifyBtn
机器人:layout_weight =1
机器人:textAppearance =机器人:ATTR / textAppearanceSmall
机器人:背景=@绘制/ buttonbackground
机器人:文字颜色=#FFFFFFFF
机器人:layout_gravity =右
机器人:drawableRight =@绘制/ button_notify_inactive
机器人:TEXTSIZE =12dp
机器人:阿尔法=0.9/>
< / LinearLayout中>
< / LinearLayout中>
解决方案我不能肯定在此基础上snipit,但如果你试图访问一个Android资源ID,如由previous人提到的,你需要在Xamarin使用Android.Resource.Id。
如果这不是你想要的,我想如果你有id为content_frame所需的容器内的FrameLayout问。
我设计的布局和包括的FrameLayout这是我进出使用SupportFragmentManager的切换。
I have an Activity and few Fragments. I have to replace fragment in FrameLayout. But when I'm using this function my app crashes. Here is the code of function
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"); }
And here is an error:
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
Layout.
<?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>
Also i load the fragment layout for fragments in viewPager. Here is it:
<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" />
And layout of ListView items in ViewPager.
<?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>
解决方案I am not certain based on this snipit, but if you are trying to access an Android resource Id such as mentioned by the previous person, you need to use Android.Resource.Id in Xamarin.
If this is not what you want, I would ask if you have a FrameLayout inside your desired container with the id content_frame.
I designed my layout and include a FrameLayout which is what I switch in and out of using the SupportFragmentManager.
这篇关于FragmentManager使用替换时崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!