gpt4 book ai didi

android - 尝试显示 popupWindow 时出现 IllegalStateException

转载 作者:行者123 更新时间:2023-11-30 02:50:03 25 4
gpt4 key购买 nike

我有以下代码。这很简单。每当我按下菜单项时,我都希望能够生成一个 popupWindow。但是,我不明白这个错误

06-23 19:32:51.996: E/AndroidRuntime(8237): FATAL EXCEPTION: main
06-23 19:32:51.996: E/AndroidRuntime(8237): Process: com.package, PID: 8237
06-23 19:32:51.996: E/AndroidRuntime(8237): java.lang.IllegalStateException: View org.holoeverywhere.widget.LinearLayout{436bbf70 V.E..... ......ID 0,0-0,0} has already been added to the window manager.
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:230)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.widget.PopupWindow.invokePopup(PopupWindow.java:462)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.widget.PopupWindow.showAtLocation(PopupWindow.java:683)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.widget.PopupWindow.showAtLocation(PopupWindow.java:687)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.package.DeviceSelectionActivity.showPopupFilter(DeviceSelectionActivity.java:198)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.package.DeviceSelectionActivity.onOptionsItemSelected(DeviceSelectionActivity.java:140)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.app.Activity.onOptionsItemSelected(Activity.java:338)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.app.Activity.onMenuItemSelected(Activity.java:2600)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:366)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.app.Activity.access$6(Activity.java:1)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.app.Activity$13.post(Activity.java:305)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.addon.IAddonBasicAttacher.performAddonAction(IAddonBasicAttacher.java:81)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.app.Activity.performAddonAction(Activity.java:523)
06-23 19:32:51.996: E/AndroidRuntime(8237): at org.holoeverywhere.app.Activity.onMenuItemSelected(Activity.java:297)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1012)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:741)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:884)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:546)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.view.View.performClick(View.java:4438)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.view.View$PerformClick.run(View.java:18422)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.os.Handler.handleCallback(Handler.java:733)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.os.Handler.dispatchMessage(Handler.java:95)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.os.Looper.loop(Looper.java:136)
06-23 19:32:51.996: E/AndroidRuntime(8237): at android.app.ActivityThread.main(ActivityThread.java:5001)
06-23 19:32:51.996: E/AndroidRuntime(8237): at java.lang.reflect.Method.invokeNative(Native Method)
06-23 19:32:51.996: E/AndroidRuntime(8237): at java.lang.reflect.Method.invoke(Method.java:515)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-23 19:32:51.996: E/AndroidRuntime(8237): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-23 19:32:51.996: E/AndroidRuntime(8237): at dalvik.system.NativeStart.main(Native Method)

下面添加的是我的 Activity 一瞥

View filterView;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
setContentView(R.layout.main_activity);

filterView = inflater.inflate(R.layout.popup_layout, null, false);

}

我需要 filterView 是全局的,因为我也在我的一些方法中使用它

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.device_selection_filter:
showPopupFilter();
break;

}
return super.onOptionsItemSelected(item);
}

private void showPopupFilter(){

final PopupWindow filters = new PopupWindow(filterView, getWindowManager().getDefaultDisplay().getWidth(), 800, true);
filters.showAtLocation(findViewById(R.id.parent), Gravity.BOTTOM, 0, 0);

FluxTextView tv = ((FluxTextView) (filterView.findViewById(R.id.click)));
tv.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

filters.dismiss();
}
});

}

最佳答案

事实证明,我的代码中实际上没有错误。我设法通过在案例后添加 return true; 而不是 break; 来修复它。

switch (item.getItemId()) {

case R.id.device_selection_filter:
showPopupFilter();
return true;
}

(如果我错了,谁能纠正我)发生的事情是 onOptionsItemSelected() 在每次点击后运行两次。这会导致弹出布局被添加两次,因此

 IllegatStateException ... has already been added to the window manager.

我希望这对以后的人有帮助。

关于android - 尝试显示 popupWindow 时出现 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24364089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com