Android:java.lang.ClassCastException:com.Android.layoutlib.bridge.Android.BridgeContext不能强制转换为Android.app.Activity“
具体问题如下:Android:java.lang.ClassCastException:com.Android.layoutlib.bridge.Android.BridgeContext不能强制转换为Android.app.Activity“,java,android,android-activity,android-context,onmeasure,Java,Android,Android Activity,Android Context,Onmeasure,具体问题如下: java.lang.ClassCastException: com.android.layoutlib.bridge.android.BridgeContext cannot be cast to android.app.Activity at io.jchat.android.view.LoginView.onMeasure_Original(LoginView.java:123); at io.jchat.android.view.LoginView.onMeasure(Lo
java.lang.ClassCastException: com.android.layoutlib.bridge.android.BridgeContext cannot be cast to android.app.Activity
at io.jchat.android.view.LoginView.onMeasure_Original(LoginView.java:123);
at io.jchat.android.view.LoginView.onMeasure(LoginView.java) ;
我的代码是:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.getSize(heightMeasureSpec);
mContext = getContext();
Activity activity = (Activity)mContext;
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenHeight = dm.heightPixels;
int diff = (screenHeight - statusBarHeight) - height;
if(mListener != null){
mListener.onSoftKeyboardShown(diff);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
作为一名大一新生,我渴望得到您的帮助。谢谢!Class com.android.layoutlib.bridge.android.BridgeContext不扩展android.app.Activity,这是执行强制转换所需的条件。请检查这些类之间的关系。Activity Activity=ActivitymContext;将不起作用。mContext变量是Br的实例idgeContext..您不能将其强制转换为活动..谢谢。但我确实需要获取WindowVisibleDisplayFrame和GetMetrics。那么您知道如何进行替换吗?我不是android开发人员,但会寻找实现此目的的方法!android.view.Window中有一个构造函数,您可以在其中传递上下文。因此,请尝试新建Windowcontext.getDecorView.getWindowVisibleDisplayFramerect;。请尝试并让我知道它是否有效。嗨,朋友。我已经解决了这个问题。谢谢你的建议。Window是一个抽象类,因此无法实例化。我的新代码如下。@xuange,发布你的新代码作为这个问题的答案,不要混淆代码,因为这将在将来帮助其他人解决问题他们面临类似的问题确保你恢复问题陈述..和+1,以确保你真正的努力
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.getSize(heightMeasureSpec);
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusBarHeight = 0;
if (resourceId > 0) {
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
dm = getResources().getDisplayMetrics();
int screenHeight = dm.heightPixels;
int diff = (screenHeight - statusBarHeight) - height;
if(mListener != null){
mListener.onSoftKeyboardShown(diff);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}