微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 android 复选框崩溃

如何解决使用 android 复选框崩溃

您好,我正在开发一款可以记录电话的应用。但现在我正在处理应用程序的演示幻灯片,如果未选中(条款)复选框,btnNext 按钮将被禁用,如果该按钮被选中,则它被启用。我通过两个条件(第 81 行)管理了所有这些。该应用程序不断崩溃。一些帮助会非常方便。 我给你留下代码和暗恋的日志

粉碎日志

boolean android.widget.CheckBox.isChecked()' on a null object reference

我的代码

包 com.conta.app.spyear;

public class WelcomeActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private LinearLayout layoutDot;
    private TextView[]dotstv;
    private int[]layouts;
    private Button btnNext;
    private MyPagerAdapter pagerAdapter;
    private CheckBox terms;

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

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

        setStatusBarTransparent();

        setContentView(R.layout.activity_welcome);

        viewPager = findViewById(R.id.view_pager);
        layoutDot = findViewById(R.id.dotLayout);
        btnNext = findViewById(R.id.btn_next);
        terms = (CheckBox) findViewById(R.id.terms);



        btnNext.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int currentPage = viewPager.getCurrentItem()+1;
                if(currentPage < layouts.length) {
                    //move to next page
                    viewPager.setCurrentItem(currentPage);
                } else {
                    startMainActivity();
                }
            }
        });
        layouts = new int[]{R.layout.slider_1,R.layout.slider_2,R.layout.slider_3,R.layout.slider_4};
        pagerAdapter = new MyPagerAdapter(layouts,getApplicationContext());
        viewPager.setAdapter(pagerAdapter);



        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){
                   //LAST PAGE
                    btnNext.setText("START");
                    btnNext.setEnabled(false);

                    if(terms.isChecked()){
                        btnNext.setEnabled(true);
                    }

                    else{

                        btnNext.setEnabled(false);

                    }

                }
                 else {
                    btnNext.setText("NEXT");
                }
                setDotStatus(position);


            }


            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        setDotStatus(0);
    }

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

    private void setFirstTimeStartStatus(boolean stt) {
        SharedPreferences ref = getApplicationContext().getSharedPreferences("IntroSliderApp",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]);
        }
        //Set current dot active
        if(dotstv.length>0){
            dotstv[page].setTextColor(Color.parseColor("#ffffff"));
        }
    }
    private void startMainActivity(){
        setFirstTimeStartStatus(false);
        startActivity(new Intent(WelcomeActivity.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);
        }

    }
}

完整的 logcat 错误

38:37.470 16542-16542/com.example.ngoctri.introsliderexam E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ngoctri.introsliderexam,PID: 16542
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.CheckBox.isChecked()' on a null object reference
        at com.conta.app.spyear.WelcomeActivity$2.onPageSelected(WelcomeActivity.java:81)
        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.conta.app.spyear.WelcomeActivity$1.onClick(WelcomeActivity.java:56)
        at android.view.View.performClick(View.java:7448)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。