我正在构建一个包含多个页面的应用程序,每个主页都显示在main活动的一个片段中。每当用户想要更改页面时,活动中的片段都会更改。
我想为自己的java文件中的每个片段编写代码,而不是为main活动中的所有片段编写代码。
我试过将代码的每一部分放入片段的onCreate和onCreateView方法中(包括尝试onStart,onPause和整个其他方法),但是我注意到,当创建片段时,代码只是没有运行。
我在这里看到了其他类似问题的问题,但没有一个答案为我提供了实际的解决方案。
我的问题是,如何为该片段的java文件中的每个片段编写代码,并使其实际运行?我知道,如果我的片段是在活动中静态创建的,那会容易得多,但是不是,而是在运行时创建的。
作为参考,每个片段在活动中的显示方式如下:
fragmentManager.beginTransaction().replace(R.id.container, HomeFragment.newInstance(position)).commit();
最佳答案
尝试这个,
在主要活动中,您可以将片段类中定义的静态方法调用为:
AuthFragment.NewInstance(LoginActivity.this, constantsObj);
该行仅会出现在您的片段调用活动中。
现在在您的片段的静态方法中,找到并创建片段为:
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或任何其他容器。