BoomMenu не отображается - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь создать меню стрелы. Мое устройство - android 10. Я использую BoomMenu 2.1.1, это мой код xml. Проблема в том, что моя активность прекращается при открытии с ошибкой ниже

 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.get(ArrayList.java:437)
    at com.nightonke.boommenu.BoomMenuButton.createPieces(BoomMenuButton.java:408)
    at com.nightonke.boommenu.BoomMenuButton.doLayoutJobs(BoomMenuButton.java:390)
    at com.nightonke.boommenu.BoomMenuButton.onLayout(BoomMenuButton.java:376)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1775)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:142)
    at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:41)
    at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1556)
    at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:888)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:783)
    at android.view.View.layout(View.java:22090)
    at android.view.ViewGroup.layout(ViewGroup.java:6358)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3239)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2735)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1821)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7916)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:980)
    at android.view.Choreographer.doCallbacks(Choreographer.java:804)
    at android.view.Choreographer.doFrame(Choreographer.java:739)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:965)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:264)

Ниже мой текущий код xml и java. Я установил bmb_buttonEnum и bmb_piecePlaceEnum и bmb_buttonPlaceEnum из моей активности (даже без установки или создания экземпляра BoomMenuButton, все еще давит при открытии активности )

 <com.nightonke.boommenu.BoomMenuButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_margin="@dimen/fab_margin"
     android:id="@+id/bmb"

   />

developer_options = (BoomMenuButton) rootView.findViewById(R.id.bmb);
                developer_options.setButtonEnum(ButtonEnum.Ham);
                developer_options.setPiecePlaceEnum(PiecePlaceEnum.HAM_3);
                developer_options.setButtonPlaceEnum(ButtonPlaceEnum.HAM_3);
                

Я пытался использовать нижеприведенное, но ничего не касалось активности, но все равно давило

    <com.nightonke.boommenu.BoomMenuButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_margin="@dimen/fab_margin"
    app:bmb_buttonEnum="ham"
    app:bmb_piecePlaceEnum="piecePlace_ham_4"
    app:bmb_buttonPlaceEnum="buttonPlace_ham_4"
    android:id="@+id/bmb"
    />

1 Ответ

0 голосов
/ 04 сентября 2020

После того, как вы установили button-enum, piece-place-enum, and button-place-enum в. xml или. java, вам необходимо инициализировать построитель для каждой кнопки в вашем действии.

Создайте массив изображений для отображения на каждой кнопке boomButton ( если вы не хотите, чтобы они были одинаковыми)

Integer[] bmbImages = {R.drawable.ic_image, R.drawable.ic_image2, R.drawable.ic_image3}

Создайте массив для текста внутри

String[] bmbText = {getString(R.string.your_string), getString(R.string.text2), getString(R.string.text3)};

L oop через каждую кнопку boomButton для настройки

for (int i = 0; i < developer_options.getPiecePlaceEnum().pieceNumber(); i++) {
     HamButton.Builder builder = new HamButton.Builder()
        .normalImageRes(bmbImages[i])
        .normalTextRes(bmbText[i])
        .subNormalTextRes("array of subtext here");

     developer_options.addBuilder(builder);}

Вот ссылка, откуда я получил эту информацию: BoomMenu на GitHub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...