gpt4 book ai didi

java - 动态创建的 fragment 中的代码问题

转载 作者:行者123 更新时间:2023-12-01 11:42:34 25 4
gpt4 key购买 nike

我正在构建一个包含多个页面的应用程序,每个主页面都显示在主 Activity 的 fragment 中。每当用户想要更改页面时, Activity 中的 fragment 就会更改。

我想在其自己的 java 文件中为每个 fragment 编写代码,而不是为主 Activity 中的所有 fragment 编写代码。

我尝试将每一位代码放入 fragment 的 onCreate 和 onCreateView 方法中(包括尝试 onStart、onPause 和整个其他负载),但我注意到创建 fragment 时代码并未运行.

我在这里看到了其他类似问题的问题,但没有一个答案为我提供了实际的解决方案。

我的问题是,如何为该 fragment 的 java 文件中的每个 fragment 编写代码并实际运行它?我知道如果我的 fragment 是在 Activity 中静态创建的,那么这会容易得多,但这些 fragment 不是,它们是在运行时创建的。

作为引用,每个 fragment 在 Activity 中显示如下:

fragmentManager.beginTransaction().replace(R.id.container, HomeFragment.newInstance(position)).commit();

最佳答案

试试这个,
从主 Activity 中,您可以调用 fragment 类中定义的静态方法,如下所示:

AuthFragment.NewInstance(LoginActivity.this, constantsObj);

这唯一的一行将进入您的 fragment 调用 Activity 。

现在在您的 fragment 中的静态方法内,找到 fragment 并将其创建为

 public static void NewInstance(LoginActivity activityContext, Constants constantsObj) {
clsConstantsObj = constantsObj;
urlToCatch = clsConstantsObj.toString();
urlToCatch = urlToCatch.replace("/params", "");

FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
activityContextInFragment = activityContext;

fragmentManager = activityContext.getSupportFragmentManager();

AuthFragment findAuthFragment = (AuthFragment) fragmentManager
.findFragmentByTag("authFragment");

if (findAuthFragment == null) {
AuthFragment authFragment = new AuthFragment();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.mainviewRegionwise, authFragment, "authFragment");
fragmentTransaction.commit();
}
}

注意“R.id.mainviewRegionwise”,它是主容器的 ID,可以是 FrameLayout 或任何其他容器。

关于java - 动态创建的 fragment 中的代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29412764/

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