单击时找不到局部变量,调试器打开 Looper.java,应用死机

Cannot find local variable on click, debugger opens Looper.java, app dies

我正在尝试学习如何制作带有显示进度的点的 viewPager,基本上是那些欢迎屏幕,我正在学习教程。它有很好的注释,我似乎明白发生了什么,但是当我单击我的 "next" 按钮时,应用程序死了。

我附上了下面的代码,以及我在调试器中遇到的错误的屏幕截图。希望有人能够提供帮助。我已经按照教程中的原样返回所有内容,以确保不是我的 "creative input" 弄乱了,但它仍然崩溃了。 "skip" 按钮工作正常:

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();
            }
        }
    });
}

这是 "Fatal exception" 我得到的:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.android.signs, PID: 31291 java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at com.example.android.signs.WelcomeActivity.addBottomDots(WelcomeActivity.java:99) at com.example.android.signs.WelcomeActivity.access0(WelcomeActivity.java:24) at com.example.android.signs.WelcomeActivity.onPageSelected(WelcomeActivity.java:123) at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1947) at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:686) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:670) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:631) at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:612) at com.example.android.signs.WelcomeActivity.onClick(WelcomeActivity.java:80) at android.view.View.performClick(View.java:6305) at android.view.View$PerformClick.run(View.java:24840) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6501) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Application terminated.

^ 在这里,我一直希望它能跳过并转到下一页

^ 当我跨过去时,我得到了一个 "Cannot find local variable 'btnNext'",带我去循环并卡住了。发现一些人在 gradle 中关闭 testCoverage 的主题,但那不存在,仍然添加它并将其设置为 "false" 但错误保持不变。

同时添加存储库:https://github.com/simplydikka/traffic.git

 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("&#8226;"));
            dots[i].setTextSize(35);
            dots[i].setTextColor(colorsInactive[0]);
            dotsLayout.addView(dots[i]);
        }

        if (dots.length > 0)
            dots[currentPage].setTextColor(colorsActive[0]);
    }

问题在于您将当前页面(正在增加)用作未增加的数组的索引。点数组的索引将始终为 0,所以只需使用 0。我认为,我能够一直到主屏幕,很难说什么时候我什么都看不懂。我认为您甚至不需要点数组。