首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ApplicationContext ()中获取ApplicationContext

如何从ApplicationContext ()中获取ApplicationContext
EN

Stack Overflow用户
提问于 2016-01-22 02:18:47
回答 1查看 5K关注 0票数 0

守则如下:

上下文c= getContext().createPackageContext("com.master.schedule",Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY); int id = c.getResources().getIdentifier("layout_main","layout","com.master.schedule");LayoutInflater inflater = LayoutInflater.from(c);piflowView = inflater.inflate(id,null);

com.master.schedule是我的包project.The上的代码,它显示了另一个项目(他的包名与我的不同)如何膨胀我的项目,在我的项目中只有一个ViewGroup(我没有活动);当我调用"context.getApplicationContext“时,它返回null.我的项目代码如下:

代码语言:javascript
复制
public class CascadeLayout extends RelativeLayout {
    private Context context;
    public CascadeLayout(Context context) {
        super(context);
        this.context=context.getApplicationContext();
    }
     @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        //here: context == null;
    }
}

我发现createPackageContext()给我的"Context c“是一个ContextImpl类型;我认为这是导致返回null的原因;

那么我如何才能得到一个不为空的ApplicationContext呢?

顺便说一句:请不要说服我不要调用getApplicationContext();,因为我必须使用.jar,jar需要在其中调用getApplicationContext()

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 03:26:23

createPackageContext()的文档声明:

返回给定应用程序名称的新上下文对象。此上下文与命名应用程序启动时得到的内容相同,其中包含相同的资源和类加载器。

在字里行间阅读一点,这个上下文显然应该与应用程序上下文“相同”。但是,您可以看到它的getApplicationContext()返回null,因此我们可以尝试通过使用ContextWrapper来修复这个问题(参见下面)。希望这种方法能够满足您的需要。

在下面的代码中,WrappedPackageContext用于包装createPackageContext()返回的“包上下文”,覆盖getApplicationContext()实现,使其返回自己。

代码语言:javascript
复制
class WrappedPackageContext extends ContextWrapper {
    WrappedPackageContext(Context packageContext) {
        super(packageContext);
    }

    @Override
    public Context getApplicationContext() {
        return this;
    }
}

Context createApplicationContext(Context packageContext) {
    return new WrappedPackageContext(packageContext);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34937912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档