7

I am using this library for using an emoji keyboard on my app. https://github.com/ankushsachdeva/emojicon

The Readme states that the topmost view of your activity layout hierarchy has to be used to initialize the popupwindow.

My app is implemented via fragments.

This is the code I am using for testing:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.overview1_layout, container,
            false);

    // Give the topmost view of your activity layout hierarchy. This will be used to measure soft keyboard height
    EmojiconsPopup popup = new EmojiconsPopup(view, getActivity());

    //Will automatically set size according to the soft keyboard size        
    popup.setSizeForSoftKeyboard();

    popup.showAtBottom();


    return view;
}

If I run this code I am getting following error in logcat:

11-02 22:37:16.685: E/AndroidRuntime(30363): java.lang.RuntimeException: Unable to resume activity {com.Testing.full/com.Testing.full.MainActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?

EDIT: I am using SherlockFragment

tobias
  • 2,172
  • 3
  • 32
  • 50

2 Answers2

4

save view as instance member of fragment and initialize Emojicons Popup in OnViewCreated method. That might solve your problem.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.overview1_layout, container,
        false);

this.view = view

return view;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

// Give the topmost view of your activity layout hierarchy. This will be used to measure soft keyboard height
EmojiconsPopup popup = new EmojiconsPopup(view, getActivity());




//Will automatically set size according to the soft keyboard size        
popup.setSizeForSoftKeyboard();

popup.showAtBottom();
}

But for the question title - check here

Community
  • 1
  • 1
Heisenberg
  • 3,001
  • 3
  • 24
  • 50
0

In onStart() of the Fragment or other Callbacks-Methods after onCreateView call:

emojiconsPopup = new EmojiconsPopup(**getView()**, getActivity());
emojiconsPopup.setSizeForSoftKeyboard();

An alternative is:

emojiconsPopup = new EmojiconsPopup(  getView().getRootView()  , getActivity());
emojiconsPopup.setSizeForSoftKeyboard();
gsamaras
  • 66,800
  • 33
  • 152
  • 256