我正在将一个Eclipse项目转换为在Android Studio中工作并解决了所有问题,除了一些布局xmls在拖放视图中显示以下问题
渲染问题:无法实例化以下类 X.X.X.myclass。
我检查了我的课程,看起来没问题,我从小小的下拉菜单中更改了最新的API; 22(我猜这是编译API)。我已经改变了我的Gradle设置,它可能是那里的东西吗?
我发布了任何代码,因为我不确定哪些有用 - 有什么想法吗?
答案 0 :(得分:0)
首先:这只是一个布局预览。您可以编辑XML并继续执行项目,它不会影响任何内容。
布局渲染事物从字面上运行你的Java类,用一些模拟实现或实际的android设备创建预览,类似于测试模拟实现。
所以这条消息只是告诉你这个模拟系统无法呈现预览。
但是如果你真的想看预览,那么你必须检查你的课程中你依赖变量的位置,或模拟系统无法访问的应用程序固有的对象。
例如,如果您的自定义视图在onLayout期间执行了一些特殊操作:
@Override onLayout(...){
int value = MyLayoutDetailsCalculation.getExtraPadding(getContext());
}
这是一个在使用上下文的单独类上调用静态方法的代码(可能从系统资源或显示管理器获取值),这在模拟环境中不能很好地执行,预览也不会无法呈现它。
幸运的是,这很容易解决:
@Override onLayout(...){
int value;
if(isInEditMode()){ // that returns true if this code is being executed by AndroidStudio mocked system.
value = 0; // any value that makes OK for your custom class to properly show a preview
} else {
value = MyLayoutDetailsCalculation.getExtraPadding(getContext());
}
}