【发布时间】:2019-01-31 19:59:14
【问题描述】:
我的应用流程如下:
主要活动: HomeFragment -> BlackoutSetupFragment -> BlackoutFragment -> HomeFragment
由于某种原因,当我尝试从 BlackoutFragment 转到 HomeFragment 时,MainActivity 变为空,并且在我离开应用程序并返回之前什么都不会呈现。左边是 HomeFragment 通常的样子,右边是我导航回它时的样子:
我用来设置片段的方法集:
// Which is invoked like
// SetFragment(typeof(HomeFragment), "Home", true, true, false);
public void SetFragment(Type fragmentType, string fragmentName, bool addToBackStack, bool showNavigationIndicator, bool useSlideAnimation)
{
if (fragmentType == typeof(HomeFragment))
SetFragment(new HomeFragment(), fragmentType, fragmentName, addToBackStack, showNavigationIndicator, useSlideAnimation);
else if (fragmentType == typeof(BlackoutFragment))
SetFragment(new BlackoutFragment(), fragmentType, fragmentName, addToBackStack, showNavigationIndicator, useSlideAnimation);
else if (fragmentType == typeof(BlackoutSetupFragment))
SetFragment(new BlackoutSetupFragment(), fragmentType, fragmentName, addToBackStack, showNavigationIndicator, useSlideAnimation);
}
private void SetFragment(Fragment fragment, Type fragmentType, string fragmentName, bool addToBackStack, bool showNavigationIndicator, bool useSlideAnimation)
{
FragmentTransaction transaction = this.FragmentManager.BeginTransaction();
if (useSlideAnimation)
transaction.SetCustomAnimations(Resource.Animator.enter_from_left, Resource.Animator.exit_to_right, Resource.Animator.enter_from_right, Resource.Animator.exit_to_left);
transaction.Replace(Resource.Id.content_main_fragment_layout, fragment, fragmentType.Name);
if (addToBackStack)
transaction.AddToBackStack(null);
transaction.Commit();
this.FragmentManager.ExecutePendingTransactions();
if (!string.IsNullOrWhiteSpace(fragmentName))
SetAppBarTitle(fragmentName);
if (showNavigationIndicator) _navDrawerToggle.DrawerIndicatorEnabled = true;
else _navDrawerToggle.DrawerIndicatorEnabled = false;
}
主要活动内容的 axml 是这样的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_main">
<FrameLayout
android:id="@+id/content_main_fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
有人知道这里会发生什么吗?我尝试在此处包含我认为对调试有用的所有内容,但如果需要其他内容,请给我留言。
【问题讨论】:
标签: c# android android-fragments xamarin