如何解决使用 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("•"));
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 举报,一经查实,本站将立刻删除。