Atlas加载bundle插件总结:ViewGroup中加载及本地startActivity方式

Atlas在ViewGroup中及本地startActivity方式加载bundle插件

public class AtlasDelegateHelper {

    //ViewGroup中加载
    public static void switchToActivity(Activity activity, ActivityGroupDelegate delegate, ViewGroup container, String key, String activityName) {
        Intent intent = new Intent();
        intent.setClassName(activity.getBaseContext(), activityName);
        delegate.startChildActivity(container, key, intent);
    }

    //本地加载
    public static void startBundleActivity(Context context, String activityName) {
        Intent intent = new Intent();
        intent.setClassName(context, activityName);
        context.startActivity(intent);
    }

    public static void startBundleActivity(Activity activity, String activityName) {
        Intent intent = new Intent();
        intent.setClassName(activity, activityName);
        activity.startActivity(intent);
    }

    public static void startBundleActivity(Fragment fragment, String activityName) {
        Intent intent = new Intent();
        Context context = fragment.getContext();
        if (context != null) {
            intent.setClassName(fragment.getContext(), activityName);
        }
        fragment.startActivity(intent);
    }

    public static void startBundleActivities(Activity activity, String... activityNames) {
        if (activityNames != null && activityNames.length > 0) {
            Intent[] intents = new Intent[activityNames.length];
            for (int i = 0; i < activityNames.length; i++) {
                intents[i] = new Intent();
                intents[i].setClassName(activity, activityNames[i]);
            }
            activity.startActivities(intents);
        }
    }

    public static void startBundleActivity(Activity activity, String activityName, Bundle bundle) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        intent.setClassName(activity, activityName);
        activity.startActivity(intent);
    }

    public static void startBundleActivity(Fragment fragment, String activityName, Bundle bundle) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        Context context = fragment.getContext();
        if (context != null) {
            intent.setClassName(fragment.getContext(), activityName);
        }
        fragment.startActivity(intent);
    }

    public static void startBundleActivities(Activity activity, String[] activityNames, Bundle[] bundles) {
        if (activityNames != null && bundles != null && activityNames.length > 0 && bundles.length == activityNames.length) {
            Intent[] intents = new Intent[activityNames.length];
            for (int i = 0; i < activityNames.length; i++) {
                intents[i] = new Intent();
                intents[i].putExtras(bundles[i]);
                intents[i].setClassName(activity, activityNames[i]);
            }
            activity.startActivities(intents);
        }
    }

    public static void startBundleActivityForResult(Activity activity, String activityName, Bundle bundle, int requestCode) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        intent.setClassName(activity, activityName);
        activity.startActivityForResult(intent, requestCode);
    }

    public static void startBundleActivityForResult(Fragment fragment, String activityName, Bundle bundle, int requestCode) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        Context context = fragment.getContext();
        if (context != null) {
            intent.setClassName(context, activityName);
        }
        fragment.startActivityForResult(intent, requestCode);
    }

}

区分ViewGroup中加载与本地startActivity方式加载

可通过Intent传参加以区分:

public enum IntentFlag {
    NONE,
    ACTIVITY_SINGLE,
    ACTIVITY_VIEW_GROUP
}

例如登录跳转:

if (mPageClass != null) {
    if (mBundle == null) {
        mBundle = new Bundle();
    }
    mBundle.putInt("activity_flag", IntentFlag.ACTIVITY_SINGLE.ordinal());
    AtlasDelegateHelper.startBundleActivities(mActivity, new String[]{ActivityConfig.ACTIVITY_MAIN, mPageClass.getName()}, new Bundle[]{new Bundle(), mBundle});
    mActivity.overridePendingTransition(R.anim.push_bottom_in, R.anim.push_bottom_out);
} else {
    AtlasDelegateHelper.startBundleActivity(mActivity, ActivityConfig.ACTIVITY_MAIN);
    mActivity.overridePendingTransition(R.anim.push_bottom_in, R.anim.push_bottom_out);
}
mActivity.finish();
上一篇 Atlas插件bundle与host通信之接口方式
下一篇 Atlas技巧
目录
文章列表
1 Android解决Button和TabLayout英文自动大写的问题
Android解决Button和TabLayout英文自动大写的问题
2
Android NDK基础2:C_指针类型_空指针_多级指针_指针运算
Android NDK基础2:C_指针类型_空指针_多级指针_指针运算
3
React Native混合原生开发之集成RN到原生项目与RN首屏白屏优化
React Native混合原生开发之集成RN到原生项目与RN首屏白屏优化
4
设计模式(5)工厂方法模式
设计模式(5)工厂方法模式
5
Android NDK调用C++标准库问题
Android NDK调用C++标准库问题
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。