Android 布局中的布局给我一个NullPointerException

Android 布局中的布局给我一个NullPointerException,android,nullpointerexception,android-linearlayout,android-relativelayout,Android,Nullpointerexception,Android Linearlayout,Android Relativelayout,我在网上查了一下,据我所知,它应该是有效的,但再一次,互联网总是提醒我95%的时候我是错的。不管怎样,有人能告诉我为什么这不起作用吗?我收集到它正在将layoutchild添加到layout中,但我不知道为什么,如果它清楚地存在的话?请提前告诉我,谢谢。有时最简单的事情给我带来最大的麻烦 第24行是layout.addView(layoutchild) 代码: 洛基蒂: java.lang.NullPointerException at android.app.ActivityThrea

我在网上查了一下,据我所知,它应该是有效的,但再一次,互联网总是提醒我95%的时候我是错的。不管怎样,有人能告诉我为什么这不起作用吗?我收集到它正在将
layoutchild
添加到
layout
中,但我不知道为什么,如果它清楚地存在的话?请提前告诉我,谢谢。有时最简单的事情给我带来最大的麻烦

第24行是
layout.addView(layoutchild)

代码:

洛基蒂:

java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2282)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2340)
    at android.app.ActivityThread.access$800(ActivityThread.java:157)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5293)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.NullPointerException
    at com.eai.util.counter.MainActivity.onCreate(MainActivity.java:24)
    at android.app.Activity.performCreate(Activity.java:5389)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2340)
    at android.app.ActivityThread.access$800(ActivityThread.java:157)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5293)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    at dalvik.system.NativeStart.main(Native Method)

异常日志显示了源自第24行
MainActivity.java
文件第24行的异常,该文件位于
onCreate
方法中。你需要告诉我们哪一行是你代码的第24行

…但我猜这是其中一行去引用
R
R.layout
是什么,或
findViewById
也返回null


在您的代码中添加一些空检查/断言,或者使用逐步调试程序来找出什么是空的,并处理这些情况,或者修复代码中导致它们为空的其他错误。

果然,答案就在眼前。我从来没有创建过
android:id
,而是引用了一个布局而不是id。事实上,回顾过去,我使用了
R.layout
。应该很明显我不会拿回身份证的。在XML中分配一个ID,用正确的
R.ID
引用该ID,并在声明之前设置内容,在清理之后完全修复并执行

代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.pooper);
    LinearLayout layoutchild = new LinearLayout(this);
    TextView test = new TextView(this);
    test.setText("DebuggedTheHeckOuttaThis");
    layoutchild.addView(test);
    layout.addView(layoutchild);
}
第24行在我的问题中被标记了,让我移动一些东西使它更容易被看到。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.pooper);
    LinearLayout layoutchild = new LinearLayout(this);
    TextView test = new TextView(this);
    test.setText("DebuggedTheHeckOuttaThis");
    layoutchild.addView(test);
    layout.addView(layoutchild);
}