在Android中使用布局的自定义包

时间:2015-04-19 04:55:28

标签: android android-layout package

我创建了一个自定义包 com.test1.web ,我在这个包中有一个类。 (有活动的课程延伸)

我的应用程序使用 com.test2.main 源运行。

我无权访问自定义包中的 R.layout

我该怎么做才能访问它?

1 个答案:

答案 0 :(得分:1)

您可以在扩展程序中创建RemoveViews并通过意图将其发送到主程序包。

Intent intent = new Intent("OPEN_YOUR_MAIN_APP");
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout);
        intent.putExtra("layout", views);
        startActivity(intent);

或者另一种方法是通过方法Context#createPackageContext(String, int)在主应用程序中创建扩展应用程序的上下文 并调用Context#getResources()

    try {
        Context extensionAppContext = context.createPackageContext("com.test1.web", Context.CONTEXT_RESTRICTED);
        Resources extensionAppResources = extensionAppContext.getResources();
        int layoutId = extensionAppResources.getIdentifier("layout_name", "layout", "com.test1.web");
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }