我创建了customview,然后从上下文中获取Application。但它显示错误: java.lang.ClassCastException:com.android.layoutlib.bridge.android.BridgeContext无法强制转换为com.ibsv.cheerupkpi.utilities.CheerupKPIApplication
这是我的代码:
public CheerupKPIApplication mApplication;
public MenuBottomBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
LayoutInflater.from(context).inflate(R.layout.menu_bottom_bar, this);
mApplication = (CheerupKPIApplication) context.getApplicationContext();
}
请帮助我!
答案 0 :(得分:1)
Android Studio中的布局编辑器仅使用一种模拟上下文来模拟布局膨胀。它实际上并没有像在真实设备上那样拥有真正的上下文,并且由于没有应用程序在运行,因此它肯定没有应用程序上下文(即使在设备的运行时也没有)。
您可以在自定义视图中使用isInEditMode()
,以避免运行在布局编辑器中无法运行的代码。在这种情况下,您需要跳过
mApplication = (CheerupKPIApplication) context.getApplicationContext();
以及需要使用mApplication
进行初始测量,布局和绘制的任何内容。