我一直在官方Android Dev网站上关注Android Studio培训教程,以创建一个简单的"消息传递" app(link to tutorial)。我到达了#34;构建我的第一个应用程序"。当我点击"发送按钮"应用程序崩溃,消息内容无关紧要。我已经在手机和模拟器上试过了。 这是错误代码:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.john.myfirstapp, PID: 3180
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.john.myfirstapp/com.john.myfirstapp.DisplayMessageActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
at com.john.myfirstapp.DisplayMessageActivity.<init>(DisplayMessageActivity.java:16)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Android Studio也在这条线上给了我一个建议:
getSupportActionBar()setDisplayHomeAsUpEnabled(真);
它声明:
方法调用&#39; getSupportActionBar()。setDisplayHomeAsUpEnabled(true)&#39;可能会产生&#39; java.lang.NullPointerException&#39;
我非常确定这不是一个小错误,比如卷曲或缺少引用。
感谢任何帮助:)
答案 0 :(得分:0)
根据您使用过的示例,您必须执行以下操作:
class SomeClass
{
public static class ObjectType
{
public const int A = 1;
public const int B = 2;
public const int C = 4;
public const int D = 8;
}
public int MyType;
public string Title;
static void Main(string[] args)
{
List<SomeClass> list = new List<SomeClass>()
{
new SomeClass() {Title ="I am of type A", MyType = ObjectType.A }
,new SomeClass() {Title ="I am of type B", MyType = ObjectType.B }
,new SomeClass() {Title ="I am of type AB", MyType = ObjectType.A | ObjectType.B }
};
list.ForEach(p => { if (p.MyType == (ObjectType.A | ObjectType.B)) Console.WriteLine(p.Title); });
}
}
所以,也许,你没有正确启动Activity并且这个intent是null ...所以,尝试添加一个空指针检查:
Intent intent = getIntent();
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
此外,使用DisplayMessageActivity和MainActivity代码更新您的问题。然后,我可以帮助您正确解决此问题。
答案 1 :(得分:0)
请查看以下log
:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
at com.john.myfirstapp.DisplayMessageActivity.<init>(DisplayMessageActivity.java:16)
这意味着您尝试从文件getStringExtra
中null
行的16
对象调用函数DisplayMessageActivity.java
。您应该检查以避免该行中的NPE
。
答案 2 :(得分:0)
当应用程序在需要对象的情况下尝试使用null时,抛出空指针异常。其中包括:
应用程序应抛出此类的实例以指示其他非法使用null对象。
您可以在此link. Click Here
上找到更多信息