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

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/rainbow-1/p/14491904.html
Copyright © 2011-2022 走看看