动态创建的片段中的代码问题

时间:2015-04-02 12:16:14

标签: java android android-layout android-fragments android-activity

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

我想在自己的java文件中为每个片段编写代码,而不是为主要活动中的所有片段编写代码。

我已经尝试将每一段代码放在片段的onCreate和onCreateView方法中(包括尝试onStart,onPause和其他整个加载)但是我注意到当片段是创建了代码并没有运行。

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

我的问题是,如何为该片段的java文件中的每个片段编写代码并实际让它运行?我知道如果我的片段是在活动中静态创建的,那么这将更容易,但这些片段不是,它们是在运行时创建的。

作为参考,每个片段都显示在活动中,如下所示:

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

1 个答案:

答案 0 :(得分:1)

试试这个,
从主活动中,您可以将片段类中定义的静态方法称为:

AuthFragment.NewInstance(LoginActivity.this, constantsObj);

这一行只会进入你的片段调用活动。

现在在你的片段中,在静态方法中,找到并创建片段as,

 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或任何其他容器。