【发布时间】:2015-12-07 20:40:29
【问题描述】:
在onCreate() 方法中,我有以下代码:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
setupGui();
mHandler = new Handler();
mv = new MapView();
(new Thread(){
public void run() {
while (true) {
try {
Thread.sleep(1000);
mHandler.post(new Runnable() {
@Override
public void run() {
mv.createPlane(true);
}
});
} catch (Exception e) {
}
}
}
}).start();
}
其中 mv 是我所在的类的名称,其中包含一个 createPlane(boolean) 方法,用于将一些新元素放置到 UI 上。这个方法:
public void createPlane(boolean left) {
linL = (LinearLayout) findViewById(R.id.ll);
}
这不起作用。 (NullPointerExceptionfindViewById())
【问题讨论】:
-
发布createPlane方法,我们可以帮助你
-
@vspallas 在检查了问题的确切位置之后,这一行是有问题的行,所以我认为没有理由发布其他数百行。在此之后它立即停止工作。
-
@L.Bajczi 请发布有效的代码版本。最短的例子。否则,除了我发布的内容外,我无能为力。
-
要么是布局膨胀的问题(在膨胀的布局中找不到视图),要么是您从 UI 线程以外的线程修改 UI,这是被禁止的。在第二种情况下,对修改 UI 以修复问题的行使用 runOnUIThread 方法
-
你想对 linL 做什么?添加一个孩子或其他需要 UiThread 的东西?
标签: android multithreading user-interface nullpointerexception findviewbyid