E/AndroidRuntime: FATAL EXCEPTION:错误原因

当尝试启动Activity时遇到'java.lang.RuntimeException',原因是试图在null对象上调用getString方法。问题出在MenuActivity的init方法中,通过对资源ID强制类型转换修复了错误。确保在AndroidManifest.xml中正确声明Activity,并检查findViewById方法是否返回了非空对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lenovo.example/com.example.lenovo.example.MenuActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.String android.os.Bundle.getString(java.lang.String)’ on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread H . h a n d l e M e s s a g e ( A c t i v i t y T h r e a d . j a v a : 2199 ) a t a n d r o i d . o s . H a n d l e r . d i s p a t c h M e s s a g e ( H a n d l e r . j a v a : 112 ) a t a n d r o i d . o s . L o o p e r . l o o p ( L o o p e r . j a v a : 216 ) a t a n d r o i d . a p p . A c t i v i t y T h r e a d . m a i n ( A c t i v i t y T h r e a d . j a v a : 7625 ) a t j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( N a t i v e M e t h o d ) a t c o m . a n d r o i d . i n t e r n a l . o s . R u n t i m e I n i t H.handleMessage(ActivityThread.java:2199) at android.os.Handler.dispatchMessage(Handler.java:112) at android.os.Looper.loop(Looper.java:216) at android.app.ActivityThread.main(ActivityThread.java:7625) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit H.handleMessage(ActivityThread.java:2199)atandroid.os.Handler.dispatchMessage(Handler.java:112)atandroid.os.Looper.loop(Looper.java:216)atandroid.app.ActivityThread.main(ActivityThread.java:7625)atjava.lang.reflect.Method.invoke(NativeMethod)atcom.android.internal.os.RuntimeInitMethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.String android.os.Bundle.getString(java.lang.String)’ on a null object reference
at com.example.lenovo.example.MenuActivity.init(MenuActivity.java:56)
at com.example.lenovo.example.MenuActivity.onCreate(MenuActivity.java:33)
at android.app.Activity.performCreate(Activity.java:7458)
at android.app.Activity.performCreate(Activity.java:7448)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread H . h a n d l e M e s s a g e ( A c t i v i t y T h r e a d . j a v a : 2199 ) a t a n d r o i d . o s . H a n d l e r . d i s p a t c h M e s s a g e ( H a n d l e r . j a v a : 112 ) a t a n d r o i d . o s . L o o p e r . l o o p ( L o o p e r . j a v a : 216 ) a t a n d r o i d . a p p . A c t i v i t y T h r e a d . m a i n ( A c t i v i t y T h r e a d . j a v a : 7625 ) a t j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( N a t i v e M e t h o d ) a t c o m . a n d r o i d . i n t e r n a l . o s . R u n t i m e I n i t H.handleMessage(ActivityThread.java:2199) at android.os.Handler.dispatchMessage(Handler.java:112) at android.os.Looper.loop(Looper.java:216) at android.app.ActivityThread.main(ActivityThread.java:7625) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit H.handleMessage(ActivityThread.java:2199)atandroid.os.Handler.dispatchMessage(Handler.java:112)atandroid.os.Looper.loop(Looper.java:216)atandroid.app.ActivityThread.main(ActivityThread.java:7625)atjava.lang.reflect.Method.invoke(NativeMethod)atcom.android.internal.os.RuntimeInitMethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
在这里插入图片描述
使 用Intent intent = new Intent(MainActivity.this, MenuActivity.class);,出现闪退,先检查manifest中有没有申明activity
但我申明了,也闪退
错误的原因是没有强制类型转换???
void init(){
OpenLight = (Button)findViewById(R.id.openLight);
CloseLight = (Button)findViewById(R.id.closeLight);
OpenFan = (Button) findViewById(R.id.openFan);
CloseFan = (Button) findViewById(R.id.closeFan);
EquimentID = (EditText) findViewById(R.id.equimentID)
}
转换之后就可以了
不知道为什么是这样
望高人指点指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值