cuốn sách gpt4 ai đã làm

安卓 M ClassCastException : FrameLayout$LayoutParams cannot be cast to WindowManager$LayoutParams

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-03 11:42:38 38 4
mua khóa gpt4 Nike

这段代码似乎适用于 android api 16 - 22,但不适用于 api 23。我只是想显示一个带有选项的弹出窗口,并使弹出窗口下方的背景变暗:

                WindowPopUp windowPopUp =
new WindowPopUp(mContext, mPlaces.get(position), position, fromSearch);
windowPopUp.showAtLocation(v, Gravity.CENTER, 0, 0);
View parent = (View) windowPopUp.getContentView().getParent();
//dim the window in the background
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams p = (WindowManager.LayoutParams) parent.getLayoutParams();
p.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
p.dimAmount = 0.4f;
wm.updateViewLayout(parent, p);

运行此代码会导致错误:

                03-18 21:55:19.674 8814-8814/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapp, PID: 8814
java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.view.WindowManager$LayoutParams
at com.bemyapp.adapter.OuterPlaceAdapter$5.onLongClick(OuterPlaceAdapter.java:400)
at android.view.View.performLongClick(View.java:5237)
at android.view.View$CheckForLongPress.run(View.java:21121)
tại android.os.Handler.handleCallback(Handler.java:739)
tại android.os.Handler.dispatchMessage(Handler.java:95)
tại android.os.Looper.loop(Looper.java:148)
tại android.app.ActivityThread.main(ActivityThread.java:5417)
tại java.lang.reflect.Method.invoke (Phương thức gốc)
tại com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
tại com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Điều gì đã xảy ra?

据我所知,WindowManager.LayoutParams mở rộng ViewGroup.LayoutParams,当我调用 parent.getLayoutParams() 时,它返回一个ViewGroup.LayoutParams 所以不应该有 classCastException.

câu trả lời hay nhất

只需再添加一个 .getParent() 即可访问容器。

 nếu (android.os.Build.VERSION.SDK_INT > 22) {
container = (View) pwindow.getContentView().getParent().getParent();
}khác{
container = (View) pwindow.getContentView().getParent();
}

关于安卓 M ClassCastException : FrameLayout$LayoutParams cannot be cast to WindowManager$LayoutParams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36093254/

38 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress