单击时找不到局部变量,调试器打开Looper.java,应用程序终止

时间:2018-11-02 16:07:09

标签: java android loops android-viewpager

我正在尝试学习如何制作一个带有显示进度的点的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”,但是错误保持不变。

还要添加存储库:https://github.com/simplydikka/traffic.git

1 个答案:

答案 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("&#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。我想一直到主屏幕都很难知道,什么时候我什么都不懂。我认为您甚至不需要点阵列。