-3

I am trying to get a welcome screen in my app ,but I got this error after running the app and clicked on next button in the welcome screen.

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setTextColor(int)' on a null object reference
                                                                             at com.example.siva.signin.SplashScreen_Activity.setDotStatus(SplashScreen_Activity.java:116)
                                                                             at com.example.siva.signin.SplashScreen_Activity.access$500(SplashScreen_Activity.java:19)
                                                                             at com.example.siva.signin.SplashScreen_Activity$3.onPageSelected(SplashScreen_Activity.java:83)
                                                                             at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1939)
                                                                             at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:679)
                                                                             at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:663)
                                                                             at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:624)
                                                                             at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:605)
                                                                             at com.example.siva.signin.SplashScreen_Activity$2.onClick(SplashScreen_Activity.java:58)
                                                                             at android.view.View.performClick(View.java:4780)
                                                                             at android.view.View$PerformClick.run(View.java:19866)
                                                                             at android.os.Handler.handleCallback(Handler.java:739)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                             at android.os.Looper.loop(Looper.java:135)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

I got above error the above error when I click on the next button after running the app This is the code I have written...

public class SplashScreen_Activity extends AppCompatActivity {

    private ViewPager viewPager;
    private LinearLayout layoutDot;
    private TextView[] dotstv;
    private int[] layouts;
    private Button btnNext;
    private Button btnSkip;
    private MyPagerAdapter myPagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (!isFirstTimeStartApp()) {
            startMainActivity();
            finish();
        }

        setStatusbarTransparent();

        setContentView(R.layout.activity_splash_screen_);

        viewPager = findViewById(R.id.view_pager);
        layoutDot =(LinearLayout) findViewById(R.id.dotlayout);
        btnNext =(Button) findViewById(R.id.btn_next);
        btnSkip =(Button) findViewById(R.id.btn_skip);
        btnSkip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startMainActivity();
            }
        });

        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int currentpage = viewPager.getCurrentItem() + 1;
                if (currentpage < layouts.length) {
                    viewPager.setCurrentItem(currentpage);
                } else {
                    startMainActivity();
                }
            }
        });
        layouts = new int[]{R.layout.slider_1, R.layout.slider_2, R.layout.slider_3};
        myPagerAdapter = new MyPagerAdapter(layouts, getApplicationContext());
        viewPager.setAdapter(myPagerAdapter);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                if (position == layouts.length - 1) {
                    btnNext.setText("START");
                    btnSkip.setVisibility(View.GONE);
                } else {
                    btnNext.setText("NEXT");
                    btnSkip.setVisibility(View.VISIBLE);
                }

                setDotStatus(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        setDotStatus(0);
    }

    private boolean isFirstTimeStartApp() {
        SharedPreferences ref = getApplicationContext().getSharedPreferences("IndroSliderApp", Context.MODE_PRIVATE);
        return ref.getBoolean("Flag", true);
    }

    private void setFirstTimeStartStatus(boolean stt) {
        SharedPreferences ref = getApplicationContext().getSharedPreferences("IndroSliderApp", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = ref.edit();
        editor.putBoolean("FirstTimeStartFlag", stt);
        editor.commit();
    }

    private void setDotStatus(int page) {
        layoutDot.removeAllViews();
        dotstv = new TextView[layouts.length];
        for (int i = 0; i < dotstv.length; i++) {
            dotstv[i] = new TextView(this);
            dotstv[i].setText(Html.fromHtml("&#8226;"));
            dotstv[i].setTextSize(30);
            dotstv[i].setTextColor(Color.parseColor("#a9b4bb"));
            layoutDot.addView(dotstv[i]);
            if (dotstv.length > 0) {
                dotstv[page].setTextColor(Color.parseColor("#ffffff"));
            }
        }
    }

    private void startMainActivity() {
        setFirstTimeStartStatus(false);
        startActivity(new Intent(SplashScreen_Activity.this, MainActivity.class));
        finish();
    }

    private void setStatusbarTransparent() {
        if (Build.VERSION.SDK_INT >= 21) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }
    }
}

Can anyone guide me to solve this .... Thanks.

Nikson
  • 900
  • 2
  • 21
  • 51
  • 2
    Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Chisko Mar 19 '18 at 00:15

1 Answers1

0

In your setDotStatus() method, you have this bit of code:

    for (int i = 0; i < dotstv.length; i++) {
        ...
        if (dotstv.length > 0) {
            dotstv[page].setTextColor(Color.parseColor("#ffffff"));
        }
    }

Move the if statement outside of the for loop.

Ben P.
  • 52,661
  • 6
  • 95
  • 123
  • Now it says, java.lang.UnsupportedOperationException: Required method destroyItem was not overridden at com.example.siva.signin.MyPagerAdapter.destroyItem(MyPagerAdapter.java:44) – Nikson Mar 19 '18 at 00:21