Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 线程无法修改布局_Android_Multithreading_User Interface_Nullpointerexception_Findviewbyid - Fatal编程技术网

Android 线程无法修改布局

Android 线程无法修改布局,android,multithreading,user-interface,nullpointerexception,findviewbyid,Android,Multithreading,User Interface,Nullpointerexception,Findviewbyid,在onCreate()方法中,我有以下代码: protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.mapview); setupGui(); mHandler = new Handler(); mv = new MapView(); (new Thread(){

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

这是行不通的。(
NullPointerException
at
findViewById()

很可能,问题在于您的事情顺序。您必须先膨胀视图,然后才能尝试按ID在该视图中查找视图。在膨胀任何内容之前,您正在尝试
findViewById
!您所拥有的只是
MapView
对象


您需要确保在运行线程之前,包含
R.id.ll
的视图已膨胀

发布createPlane方法,我们可以提供帮助you@vspallas在检查了问题出现的具体位置之后,这一行就是有问题的那一行,因此我认为没有理由发布其他数百行。在此之后,它立即停止工作。@L.Bajczi请发布有效代码的版本。最简短的例子。否则,我帮不了你什么也帮不了你。要么是版面膨胀问题(在膨胀的版面中找不到视图),要么是你从UI线程以外的线程修改UI,这是被禁止的。在第二种情况下,对修改UI以修复问题的行使用runOnUIThread方法您试图对linL做什么?添加一个子线程或其他需要UiThread的东西?它就在setContentView(R.layout.mapview)之后;其中确实包含此元素。@L.Bajczi在我继续帮助之前,请添加更多代码-一个完整、简短的工作代码集。否则,这将是一个猫捉老鼠的游戏,我猜,你确认或否认,这是行不通的。我已经编辑了这个问题,我希望这样可以理解。抱歉。@L.Bajczi yes-您正在调用mv.makePlane()-mv是MapView的一个特定实例。我认为它还没有膨胀。问题也可能是弗拉基米尔对你问题的评论。也要探索这条道路。