gpt4 book ai didi

c# - 替换 fragment - fragment 类的新实例未实例化

转载 作者:行者123 更新时间:2023-11-30 01:21:59 25 4
gpt4 key购买 nike

我正在尝试使用以下代码行将一个 fragment 替换为另一个 fragment :

FragmentTransaction ft = Activity.FragmentManager.BeginTransaction();
UploadCompleted ucompleted = new UploadCompleted();
ft.Replace(Resource.Id.CameraFragmentContainer, ucompleted, "uploadcompleted");
ft.AddToBackStack(null);
ft.Commit();

该 fragment 正在另一个 fragment 中被替换,该 fragment 使用 Activity 的 fragment 管理器。问题是被替换 fragment 的 OnCreate 和 OnCreateView 方法没有被调用, fragment 的旧实例(我第一次替换它时实例化的 fragment )被实例化,这就是为什么我无法传递任何新的替换 fragment 的值。知道我做错了什么吗?我是 Android 开发的新手,所以我对 fragment 的了解不是很好。

最佳答案

根据您的逻辑,应该调用新 fragment 的 OnCreateOnCreateView。在 Activity 级别而不是在 Fragment 级别执行 FragmentTransaction 是一种很好的做法。在上面的代码 fragment 中,您正在从已显示的 fragment 中创建新 fragment 的实例,并从父 Activity 中替换自身。这不是推荐的方法。我建议进行以下更改。

public class ParentActivity:Activity 
{
public void ChangeToUploadCompleted()
{
FragmentTransaction ft = FragmentManager.BeginTransaction();
UploadCompleted ucompleted = new UploadCompleted();
ft.Replace(Resource.Id.CameraFragmentContainer, ucompleted, "uploadcompleted");
ft.AddToBackStack(null);
ft.Commit();
}
}

public FirstFragment:Fragment
{
void CaptureCompleted ()
{
((ParentActivity)Activity).ChangeToUploadCompleted();
}
}

这是切换 fragment 的好习惯。这也可能会解决您的问题

关于c# - 替换 fragment - fragment 类的新实例未实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com