布局中的布局给我一个NullPointerException

时间:2014-05-12 23:55:44

标签: nullpointerexception android-linearlayout relativelayout

我在互联网上查了一下,据我所知,它应该工作,但是再一次,互联网总是让我想起95%的时间我错了。无论如何,任何人都可以告诉为什么这ISN&T?T工作?我已经收集了它layoutchild添加到layout但我不知道为什么,如果它明显存在?请提前感谢。有时最简单的事情给我带来的麻烦。

第24行将是layout.addView(layoutchild);

代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RelativeLayout layout = (RelativeLayout) findViewById(R.layout.activity_main);
    LinearLayout layoutchild = new LinearLayout(this);
    TextView test = new TextView(this);
    test.setText("pooppoopoppopopo");
    layoutchild.addView(test);
    layout.addView(layoutchild);
}

LogKitty:

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)

2 个答案:

答案 0 :(得分:0)

您的例外日志会在第24行的MainActivity.java文件的第24行显示异常,该文件位于onCreate方法内。您需要告诉我们您的代码的第24行。

...但我猜它是解除引用RR.layout之内的行之一,或findViewById也返回null。

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

答案 1 :(得分:0)

果然,答案就是盯着我。我从未创建android:id并且引用了布局而不是ID。事实上,回顾过去,我使用了R.layout。本来应该是明显的,我不会得到一个ID返回。在XML中分配ID, REFERENCING 该ID具有正确的R.id,并在干净之后在声明,修复和执行完美之前设置内容。

<强> CODE:

@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);
}