zoukankan      html  css  js  c++  java
  • Android----java.lang.NullPointerException:---java.lang.NullPointerException:

    2021-03-06 13:26:12.274 8544-8544/com.example.helloworld E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.helloworld, PID: 8544
    java.lang.NullPointerException:: Unable to start activity ComponentInfo{com.example.helloworld/com.example.helloworld.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.CheckBox.setOnCheckedChangeListener(android.widget.CompoundButton$OnCheckedChangeListener)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:219)
    at android.app.ActivityThread.main(ActivityThread.java:8349)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.CheckBox.setOnCheckedChangeListener(android.widget.CompoundButton$OnCheckedChangeListener)' on a null object reference
    at com.example.helloworld.MainActivity.setListener(MainActivity.java:161)
    at com.example.helloworld.MainActivity.onCreate(MainActivity.java:138)
    at android.app.Activity.performCreate(Activity.java:8085)
    at android.app.Activity.performCreate(Activity.java:8073)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3870)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:219) 
    at android.app.ActivityThread.main(ActivityThread.java:8349) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055) 
    2021-03-06 13:26:12.282 8544-8544/com.example.helloworld I/Process: Sending signal. PID: 8544 SIG: 9

    检查一下xml文件定义的checkBox的id和在activity里获取的id是否一致

    问题出在运行时找不到对应的checkBox


    Process: com.example.helloworld, PID: 21319
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.helloworld/com.example.helloworld.MoreActivity}: java.lang.IllegalAccessException: java.lang.Class<com.example.helloworld.MoreActivity> is not accessible from java.lang.Class<android.app.AppComponentFactory>
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3815)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:219)
    at android.app.ActivityThread.main(ActivityThread.java:8349)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
    Caused by: java.lang.IllegalAccessException: java.lang.Class<com.example.helloworld.MoreActivity> is not accessible from java.lang.Class<android.app.AppComponentFactory>
    at java.lang.Class.newInstance(Native Method)
    at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
    at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1264)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3800)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:219) 
    at android.app.ActivityThread.main(ActivityThread.java:8349) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055) 

    这是在清单文件没有注册activity

    所有的activity类都必须是public 的 不然清单文件找不到,所以就无法运行


    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference;

    这和问题一是一样的,因为找不到对应的id

    博主链接:https://blog.csdn.net/qq_42618969/article/details/81141895


    页面布局常用:

    android:id 为控件指定相应的ID
    android:text 指定控件的文本,置尽量使用strings.xml
    android:grivity 指定控件的基本位置 ,比如举重,居右,
    android:padding 指定控件的内边距,控件当中的内容
    android:singleLine 如果设置为真的话,则将控件的内容在同一行当中显示

    android:layout_above 将该空间的底部至于给定ID的空间之上
    android:layout_below: 将该控件的顶部至于给定ID的控件之下
    android:layout_toLeftOf: 将该控件的右边缘和给定ID的控件的左 边缘对其
    android:layout_toRightOf 将该控件的左边缘和给定的ID的控件的右边缘对齐

    android:layout_alignBaseLine 该控件的baseline和给定ID的控件的Baseline对齐
    android:layout_alignBottom 将该控件的底部边缘与给定ID控件的底部边缘
    android:layout_alignLeft 将该控件左边缘与给定ID控件的左边缘对齐
    android:layout_alignRight 将该控件的右边缘与给定ID控件的右边缘对齐
    android:layout_alignTop 将给定控件的顶部边缘与给定ID控件的顶部对齐

    android:alignParentBottom 如果该值为true 则将该控件的底部和父控件的底部对齐
    android:layout_alignParentLeft 如果该值为true则将该控件的左边与父控件的左边对齐
    android:layout_alignParentRight 如果该值为true则将该控件的右边与父控件的右边对齐
    android:layout_alignParentTop 将控件的顶部与父控件的顶部对齐

    android:layout_centerHorizontal 如果值为真,该控件将被至于水平方向的中央
    android:layout_centerInParent 将被至于父控件水平方向和垂直都居中
    android:layout_centerVertical 将被至于垂直方向的中央

    第一类:属性值为true或false

    android:layout_centerHrizontal 水平居中
    android:layout_centerVertical 垂直居中
    android:layout_centerInparent 相对于父元素完全居中
    android:layout_alignParentBottom 贴紧父元素的下边缘
    android:layout_alignParentLeft 贴紧父元素的左边缘
    android:layout_alignParentRight 贴紧父元素的右边缘
    android:layout_alignParentTop 贴紧父元素的上边缘
    android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

    第二类:属性值必须为id的引用名“@id/id-name”

    android:layout_below 在某元素的下方
    android:layout_above 在某元素的的上方
    android:layout_toLeftOf 在某元素的左边
    android:layout_toRightOf 在某元素的右边
    android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
    android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
    android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

    第三类:属性值为具体的像素值,如30dip,40px

    android:layout_marginBottom 离父控件底边缘的距离
    android:layout_marginLeft 离父控件左边缘的距离
    android:layout_marginRight 离父控件右边缘的距离
    android:layout_marginTop 离父控件上边缘的距离

    EditText的android:hint
    设置EditText为空时输入框内的提示信息。

    android:gravity 
    android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity=”right”则button上面的文字靠右

    android:layout_gravity
    android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,

    android:layout_gravity=”right”则button靠右

    android:layout_alignParentRight
    使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。

    padding和margin的区别:
    所以padding是定义控件自己的内容和控件边缘之间的距离,padding有填充填料的意思,而margin是在说控件的四个边缘之外的距离,指的是和别的控件之间的距离,margin有边缘,页面留白的意思


    原文链接:https://blog.csdn.net/qq_28296925/article/details/51115132

  • 相关阅读:
    2804 最大最小数质因数
    5429 多重背包
    1851 越狱
    Gvim使用
    3622 假期
    4906 删数问题
    2845 排序的代价
    poj 3352
    常用正则表达式汇总
    功能简单例子
  • 原文地址:https://www.cnblogs.com/rainbow-1/p/14491904.html
Copyright © 2011-2022 走看看