英文:
BoomMenu not showing
问题
我正在尝试创建一个 Boom 菜单,我的设备是 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)
// 其他错误信息
以下是我的当前 XML 和 Java 代码。我已经在我的活动中设置了 bmb_buttonEnum
、bmb_piecePlaceEnum
和 bmb_buttonPlaceEnum
(即使不设置或实例化 BoomMenuButton,仍会在打开活动时崩溃):
XML 代码:
<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"
/>
Java 代码:
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);
我曾尝试使用以下 XML 代码,但即使在活动端什么都不设置,仍然会导致崩溃:
<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"
/>
请问你需要关于此问题的进一步帮助吗?
英文:
I am trying to create a boom Menu.my device is an android 10.Am using BoomMenu 2.1.1
this is my xml code .Problem is that my activity crushes when opened with the below error
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)
Below is my current xml and java code.I set bmb_buttonEnum
and bmb_piecePlaceEnum
and bmb_buttonPlaceEnum
from my activity(Even without setting or instantiating the BoomMenuButton,still crushes on openint the activity)
<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);
i had tried to use the below with nothing on the activity side but stil crushes
<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
在.xml或.java文件中设置button-enum, piece-place-enum和button-place-enum
后,您需要为活动中的每个按钮初始化生成器。
创建一个图像数组以显示在每个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)};
循环遍历每个boomButton以进行自定义:
for (int i = 0; i < developer_options.getPiecePlaceEnum().pieceNumber(); i++) {
HamButton.Builder builder = new HamButton.Builder()
.normalImageRes(bmbImages[i])
.normalTextRes(bmbText[i])
.subNormalTextRes("这里是子文本数组");
developer_options.addBuilder(builder);
}
这是我获取这些信息的链接:
GitHub上的BoomMenu
英文:
After you set button-enum, piece-place-enum, and button-place-enum
in .xml or .java, you have to initialize the builder for each button in your activity.
Create an array of images to show on each boomButton (unless you want them to be the same)
Integer[] bmbImages = {R.drawable.ic_image, R.drawable.ic_image2, R.drawable.ic_image3}
Create an array for the text inside
String[] bmbText = {getString(R.string.your_string), getString(R.string.text2), getString(R.string.text3)};
Loop through each boomButton to customize
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);}
Here is the link where I got this information from:
BoomMenu on GitHub
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论