2015-11-04 4 views
4

Я добавляю этот https://github.com/rockerhieu/emojicon LIB в мое приложение, теперь это Lib требует от меня, чтобы добавить вид фрагмента на мой макетApp падает после addingfragment

<fragment 
     android:id="@+id/emojicons" 
     android:layout_width="match_parent" 
     android:layout_height="220dp" 
     class="com.rockerhieu.emojicon.EmojiconsFragment"/> 

после добавления это мое приложение падает, пожалуйста, вы можете помочь мне решить это? вот logat

Вызванный: android.view.InflateException: Binary XML файл строка # 90: Ошибка фрагмент завышении класса

+0

что возможное решение? –

+1

Вы добавили требуемую библиотеку? –

ответ

0

Вы должны использовать это для редактирования текста

<github.ankushsachdeva.emojicon.EmojiconEditText 
     android:id="@+id/emojicon_edit_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_weight="8" 
     emojicon:emojiconSize="28sp" /> 

, а затем в файле класса после инициализации emojitext, вы должны будете использовать эти слушатель

final EmojiconsPopup popup = new EmojiconsPopup(rootView, this); 
     //Will automatically set size according to the soft keyboard size 
     popup.setSizeForSoftKeyboard(); 

     /*--------------------------------------------------------------------*/ 

     popup.setOnDismissListener(new PopupWindow.OnDismissListener() { 

      @Override 
      public void onDismiss() { 
       changeEmojiKeyboardIcon(emojiButton, R.mipmap.smiley); 
      } 
     }); 

//If the text keyboard closes, also dismiss the emoji popup 
     popup.setOnSoftKeyboardOpenCloseListener(new EmojiconsPopup.OnSoftKeyboardOpenCloseListener() { 

      @Override 
      public void onKeyboardOpen(int keyBoardHeight) { 

      } 

      @Override 
      public void onKeyboardClose() { 
       if (popup.isShowing()) 
        popup.dismiss(); 
      } 
     }); 

     /*On emoji clicked, add it to edittext*/ 
     popup.setOnEmojiconClickedListener(new EmojiconGridView.OnEmojiconClickedListener() { 

      @Override 
      public void onEmojiconClicked(Emojicon emojicon) { 
       if (emojiconEditText == null || emojicon == null) { 
        return; 
       } 

       int start = emojiconEditText.getSelectionStart(); 
       int end = emojiconEditText.getSelectionEnd(); 
       if (start < 0) { 
        emojiconEditText.append(emojicon.getEmoji()); 
       } else { 
        emojiconEditText.getText().replace(Math.min(start, end), 
          Math.max(start, end), emojicon.getEmoji(), 0, 
          emojicon.getEmoji().length()); 
       } 
      } 
     }); 

     //On backspace clicked, emulate the KEYCODE_DEL key event 
     popup.setOnEmojiconBackspaceClickedListener(new EmojiconsPopup.OnEmojiconBackspaceClickedListener() { 

      @Override 
      public void onEmojiconBackspaceClicked(View v) { 
       KeyEvent event = new KeyEvent(
         0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL); 
       emojiconEditText.dispatchKeyEvent(event); 
      } 
     }); 


     // To toggle between text keyboard and emoji keyboard keyboard(Popup) 
     emojiButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       //If popup is not showing => emoji keyboard is not visible, we need to show it 
       if (!popup.isShowing()) { 

        //If keyboard is visible, simply show the emoji popup 
        if (popup.isKeyBoardOpen()) { 
         popup.showAtBottom(); 
         changeEmojiKeyboardIcon(emojiButton, R.mipmap.ic_action_keyboard); 
        } 

        //else, open the text keyboard first and immediately after that show the emoji popup 
        else { 
         emojiconEditText.setFocusableInTouchMode(true); 
         emojiconEditText.requestFocus(); 
         popup.showAtBottomPending(); 
         final InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
         inputMethodManager.showSoftInput(emojiconEditText, InputMethodManager.SHOW_IMPLICIT); 
         changeEmojiKeyboardIcon(emojiButton, R.mipmap.ic_action_keyboard); 
        } 
       } 

       //If popup is showing, simply dismiss it to show the undelying text keyboard 
       else { 
        popup.dismiss(); 
       } 
      } 
     }); 

Надеется, что это поможет :)

0

У меня всегда были проблемы с использованием <fragment> тег в моем XML , Я хотел бы предложить переход на <FrameLayout> и используя следующий метод в вашем коде:

FragmentManager manager = getSupportFragmentManager(); // or getFragmentManager() if you are not using android.support.v4.app.Fragment 
manager.beginTransaction().replace(R.id.frame_layout, new EmojiconsFragment()).commit(); 
0

Ваша деятельность должна реализовать эти интерфейсы:

public class MainActivity extends Activity implements EmojiconGridFragment.OnEmojiconClickedListener, OnEmojiconBackspaceClickedListener{ 

и внедрить метод (в вашей деятельности):

@Override 
    public void onEmojiconClicked(Emojicon emojicon) { 

    } 

    @Override 
    public void onEmojiconBackspaceClicked(View v) { 

    } 

Очень странно, почему это не было написано в библиотеке readme

Смежные вопросы