我正在尝试学习如何制作一个带有显示进度的点的viewPager,基本上是那些欢迎屏幕,并且我正在学习一个教程。它的注释很好,我似乎知道发生了什么,但是,当我单击“下一步”按钮时,该应用程序消失了。
我将在下面附加代码,以及在调试器中得到的错误的屏幕截图。希望有人能够提供帮助。我已返回教程中的所有内容,以确保不是我的“创意输入”造成混乱,但仍然崩溃。 “跳过”按钮可以正常工作:
myViewPagerAdapter = new MyViewPagerAdapter();
viewPager.setAdapter(myViewPagerAdapter);
viewPager.addOnPageChangeListener(viewPagerPageChangeListener);
btnSkip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
launchHomeScreen();
}
});
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// checking for last page
// if last page home screen will be launched
int current = getItem(+1);
if (current < layouts.length) {
// move to next screen
viewPager.setCurrentItem(current);
} else {
launchHomeScreen();
}
}
});
}
这是我得到的“致命异常”:
E / Android运行时:致命异常:主要 流程:com.example.android.signs,PID:31291 java.lang.ArrayIndexOutOfBoundsException:length = 1;索引= 1 在com.example.android.signs.WelcomeActivity.addBottomDots(WelcomeActivity.java:99) at com.example.android.signs.WelcomeActivity.access $ 400(WelcomeActivity.java:24) 在com.example.android.signs.WelcomeActivity $ 2.onPageSelected(WelcomeActivity.java:123) 在android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1947) 在android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:686) 在android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:670) 在android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:631) 在android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:612) 在com.example.android.signs.WelcomeActivity $ 1.onClick(WelcomeActivity.java:80) 在android.view.View.performClick(View.java:6305) 在android.view.View $ PerformClick.run(View.java:24840) 在android.os.Handler.handleCallback(Handler.java:790) 在android.os.Handler.dispatchMessage(Handler.java:99) 在android.os.Looper.loop(Looper.java:164) 在android.app.ActivityThread.main(ActivityThread.java:6501) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:438) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 应用已终止。
^在这里,我一直希望它能跨过并转到下一页
^当我跨步时,我收到“找不到局部变量'btnNext'”,将我带到弯针并卡住。发现了一些人在gradle中关闭testCoverage的话题,但是那还不存在,仍然添加了它并将其设置为“ false”,但是错误保持不变。
答案 0 :(得分:1)
private void addBottomDots(int currentPage) {
dots = new TextView[layouts.length];
int[] colorsActive = getResources().getIntArray(R.array.array_dot_active);
int[] colorsInactive = getResources().getIntArray(R.array.array_dot_inactive);
int index = currentPage;
dotsLayout.removeAllViews();
for (int i = 0; i < dots.length; i++) {
dots[i] = new TextView(this);
dots[i].setText(Html.fromHtml("•"));
dots[i].setTextSize(35);
dots[i].setTextColor(colorsInactive[0]);
dotsLayout.addView(dots[i]);
}
if (dots.length > 0)
dots[currentPage].setTextColor(colorsActive[0]);
}
问题在于,您正在使用当前页面(正在增加)作为未增加的数组的索引。点数组的索引将始终为0,因此只需使用0。我想一直到主屏幕都很难知道,什么时候我什么都不懂。我认为您甚至不需要点阵列。