I have a PopupWindow that is called from a fragment, and everything works except for my Spinner. When I click on my Spinner, it crashes and gives an error message:
"android.view.WindowManager $ BadTokenException: Failed to add window token android.view.ViewRootImpl$W@421a46d8 invalid, is your activity working?"
My code to call a popup in a snippet:
ManagerPopUp mManagerPopUp = new ManagerPopUp(getActivity()); mManagerPopUp.showPopUpAddEvent();
My code in ManagerPopUp to display a popup:
public class ManagerPopUp { private static final String TAG = "PopUpManager"; private Context mContext; public ManagerPopUp(Context mContext){ this.mContext = mContext; } public PopupWindow showPopUpAddEvent(){ final PopupWindow popUp = new PopupWindow(mContext); LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.popup_add_event, null);
My Spinner Adapter:
public class AdapterCalendarSpinner extends BaseAdapter implements SpinnerAdapter { private Context mContext; private ArrayList<ClassCalendar> mCalendarsList; public AdapterCalendarSpinner(Context mContext, ArrayList<ClassCalendar> mCalendarsList) { this.mContext = mContext; this.mCalendarsList = mCalendarsList; } @Override public int getCount() { return mCalendarsList.size(); } @Override public ClassCalendar getItem(int position) { return mCalendarsList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ClassCalendar o = mCalendarsList.get(position); LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(R.layout.sp_item_calendar_selected, null); LinearLayout llCalColor = (LinearLayout)convertView.findViewById(R.id.ll_calendar_selected_color); TextView txtCalName = (TextView)convertView.findViewById(R.id.txt_calendar_selected_name); TextView txtCalEmail = (TextView)convertView.findViewById(R.id.txt_calendar_selected_email); llCalColor.setBackgroundColor(o.getCalColor()); txtCalName.setText(o.getCalName()); txtCalEmail.setText(o.getCalEmail()); txtCalName.setTextColor(Color.WHITE); txtCalEmail.setTextColor(Color.WHITE); return convertView; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { ClassCalendar o = mCalendarsList.get(position); LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(R.layout.sp_item_calendar, null);
The view as it appears in my application:

And the error I get when I click on My Spinner (red mark on the image):
09-19 11:35:23.312: E/AndroidRuntime(2933): FATAL EXCEPTION: main 09-19 11:35:23.312: E/AndroidRuntime(2933): Process: com.loopbug.ritmossegredosgym, PID: 2933 09-19 11:35:23.312: E/AndroidRuntime(2933): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@421a46d8 is not valid; is your activity running? 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.view.ViewRootImpl.setView(ViewRootImpl.java:532) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.widget.PopupWindow.invokePopup(PopupWindow.java:1019) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:925) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.widget.ListPopupWindow.show(ListPopupWindow.java:625) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.widget.Spinner$DropdownPopup.show(Spinner.java:1112) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.widget.Spinner.performClick(Spinner.java:658) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.view.View$PerformClick.run(View.java:18446) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.os.Handler.handleCallback(Handler.java:733) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.os.Handler.dispatchMessage(Handler.java:95) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.os.Looper.loop(Looper.java:136) 09-19 11:35:23.312: E/AndroidRuntime(2933): at android.app.ActivityThread.main(ActivityThread.java:5137) 09-19 11:35:23.312: E/AndroidRuntime(2933): at java.lang.reflect.Method.invokeNative(Native Method) 09-19 11:35:23.312: E/AndroidRuntime(2933): at java.lang.reflect.Method.invoke(Method.java:515) 09-19 11:35:23.312: E/AndroidRuntime(2933): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 09-19 11:35:23.312: E/AndroidRuntime(2933): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 09-19 11:35:23.312: E/AndroidRuntime(2933): at dalvik.system.NativeStart.main(Native Method)
source share