动态创建的片段中的代码问题
Issues with code in dynamically created fragments
我正在构建一个包含多个页面的应用程序,每个主要页面都显示在主要 activity 中的一个片段中。每当用户想要更改页面时,activity 中的片段就会更改。
我想在自己的 java 文件中为每个片段编写代码,而不是在 activity.
主文件中为所有片段编写代码
我已经尝试将每一位代码放入片段的 onCreate 和 onCreateView 方法中(包括尝试 onStart、onPause 和所有其他方法),但我注意到当片段被创建时,代码只是' t 运行宁.
我在这里看到了其他类似问题的问题,但 none 的答案为我提供了实际的解决方案。
我的问题是,如何在该片段的 java 文件中为每个片段编写代码并真正将其传送到 运行?我知道如果我的片段是在 activity 中静态创建的,这会容易得多,但这些不是,它们是在 运行 时间创建的。
作为参考,每个片段显示在 activity 中,如下所示:
fragmentManager.beginTransaction().replace(R.id.container, HomeFragment.newInstance(position)).commit();
试试这个,
从主 activity 你可以调用一个 静态方法 在你的片段 class 中定义为:
AuthFragment.NewInstance(LoginActivity.this, constantsObj);
这一行将进入您的片段调用 activity。
现在在您的片段中,在 静态方法 内,找到片段并将其创建为,
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 或任何其他容器。
我正在构建一个包含多个页面的应用程序,每个主要页面都显示在主要 activity 中的一个片段中。每当用户想要更改页面时,activity 中的片段就会更改。
我想在自己的 java 文件中为每个片段编写代码,而不是在 activity.
主文件中为所有片段编写代码我已经尝试将每一位代码放入片段的 onCreate 和 onCreateView 方法中(包括尝试 onStart、onPause 和所有其他方法),但我注意到当片段被创建时,代码只是' t 运行宁.
我在这里看到了其他类似问题的问题,但 none 的答案为我提供了实际的解决方案。
我的问题是,如何在该片段的 java 文件中为每个片段编写代码并真正将其传送到 运行?我知道如果我的片段是在 activity 中静态创建的,这会容易得多,但这些不是,它们是在 运行 时间创建的。
作为参考,每个片段显示在 activity 中,如下所示:
fragmentManager.beginTransaction().replace(R.id.container, HomeFragment.newInstance(position)).commit();
试试这个,
从主 activity 你可以调用一个 静态方法 在你的片段 class 中定义为:
AuthFragment.NewInstance(LoginActivity.this, constantsObj);
这一行将进入您的片段调用 activity。
现在在您的片段中,在 静态方法 内,找到片段并将其创建为,
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 或任何其他容器。