Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 Runnable类-无法从run()方法访问属性_Android_Runnable_Stringbuffer - Fatal编程技术网

Android Runnable类-无法从run()方法访问属性

Android Runnable类-无法从run()方法访问属性,android,runnable,stringbuffer,Android,Runnable,Stringbuffer,这是我的密码。我的问题是,当从run()方法访问line2时,它的长度为0 编辑:这是我的电话 class MyRunnable implements Runnable{ public StringBuffer line2; public MyRunnable(StringBuffer _line){ this.line2 = _line; Log.w("LINE", this.line2.toString(

这是我的密码。我的问题是,当从
run()
方法访问line2时,它的长度为0

编辑:这是我的电话

  class MyRunnable implements Runnable{
        public StringBuffer line2;
        public MyRunnable(StringBuffer _line){
             this.line2 = _line;
             Log.w("LINE", this.line2.toString());   // Return what it should
        }

        public void run(){
             console.append(this.line2.toString());   //Nothing happens here
        }
  }

知道我错在哪里吗?

请验证您是否正在使用单参数构造函数实例化MyRunnable类。

请尝试后期生成 MyRunnable obj=新的MyRunnable(line.toString);
在MyRunnable中获取一个字符串。我不确定该行是否作为副本或对象传递,但在您的案例中不是引用。如果它是引用,那么在MyRunnable中使用它之前,请清除该行。

0长度有什么问题?您只需将空的StrinBuffer传递到井中,它不应为0。我还清楚地看到我传递的行不是空的。你在MyRunnable类上调用线程了吗?是的,我在调用线程。
        new Thread(new Runnable() {             
            @Override
            public void run() {
                StringBuffer line = new StringBuffer();
                while(true){
                    char a = UART.serialRead(UART.fd);

                    if(a != 0){                         
                        if (a == '\r' || a == '\n'){
                            MyRunnable obj = new MyRunnable(line);
                            handler.post(obj);
                            line.delete(0, line.length());
                            obj = null;
                        }else
                            line.append(a); 
                    }                   

                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

            }
        }).start();