当前位置: 首页 > 知识库问答 >
问题:

使用setText会导致找不到源

顾鸣
2023-03-14

我有一个程序可以将USB数据记录到我创建的文件中,它工作正常。我正在尝试使用setText显示其中的一些数据,但setText正确执行一次,然后下次调用它时,我得到了一个未找到源的崩溃。

在此运行中,我将USB数据保存到我的文件中:

    @Override
public void run() {
    ByteBuffer buffer = ByteBuffer.allocate(64);
    UsbRequest request = new UsbRequest();
    request.initialize(mConnection, mEndpointIntr);
    while (true) {
        request.queue(buffer, 64);
        if (mConnection.requestWait() == request) {
            znum.setText("help"); 
            savetofile("GOT data " + System.currentTimeMillis());
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
            }
        } else {
            Log.e(TAG, "requestWait failed, exiting");
            savetofile("10 requestWait failed, exiting");
            break;
        }
    }
}

如果我rem掉上面的setText行,程序就会运行得很愉快,将数据保存到一个文件中。当我像上面那样运行代码时,程序崩溃了,我得到了一个未找到源代码的指示。

如果我在savetofile行上中断一段时间来启动程序,那么布局将使用tvZnum集进行更新,以获得良好的帮助。

然后,我逐步遍历代码并返回setText行。

一切都很好,直到我第二次执行setText,然后它崩溃了。

它似乎在android上。看法ViewRootImpl。checkThread()行4077,当它崩溃时。我试图在我的帖子中添加一张截屏图片,但我还没有足够的声誉点数。

本人声明:

    TextView znum;

并在OnCreate中拥有这个:

    znum = (TextView) findViewById(R.id.tvZnum);

tvZnum在发射器和R中表现良好。

我知道答案一定很简单,但很简单,我想不出来。

有什么想法吗?

谢谢,戴尔

编辑:这里是logCat(希腊语,我不知道如何在这里格式化):

I/dalvikvm(1529):线程ID=3:对信号3作出反应

I/dalvikvm(1529):将堆栈跟踪写入“/数据/anr/跟踪。txt'

I/系统。out(1529):正在等待调试器解决。。。

I/系统。out(1529):正在等待调试器解决。。。

I/进程(167):发送信号。PID:1529 SIG:3

I/dalvikvm(1529):线程ID=3:对信号3作出反应

I/系统。out(1529):正在等待调试器解决。。。

I/dalvikvm(1529):将堆栈跟踪写入“/数据/anr/跟踪。txt'

I/系统。out(1529):正在等待调试器解决。。。

I/系统。out(1529):正在等待调试器解决。。。

I/进程(167):发送信号。PID:1529 SIG:3

I/dalvikvm(1529):线程ID=3:对信号3作出反应

I/dalvikvm(1529):将堆栈跟踪写入“/数据/anr/跟踪。txt'

I/系统。out(1529):正在等待调试器解决。。。

I/系统。out(1529):正在等待调试器解决。。。

I/进程(167):发送信号。PID:1529 SIG:3

I/dalvikvm(1529):线程ID=3:对信号3作出反应

I/dalvikvm(1529):将堆栈跟踪写入“/数据/anr/跟踪。txt'

I/系统。out(1529):正在等待调试器解决。。。

I/系统。out(1529):正在等待调试器解决。。。

I/System.out(1529):调试器已解决(1359)

I/进程(167):发送信号。PID:1529 SIG:3

I/dalvikvm(1529):线程ID=3:对信号3作出反应

I/dalvikvm(1529):将堆栈跟踪写入“/数据/anr/跟踪。txt'

D/dalvikvm(1529):线程ID=1:撤消后仍挂起(sc=1 dc=1)

D/ProMeasure2DActivity(1529):intent:intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x10000000 cmp=com.android.missilelauncher/.MissileLauncherActivity}

D/ProMeasure2DActivity(1529):设置设备UsbDevice[mName=/dev/bus/usb/001/002,mVendorId=1240,mProductId=63,mClass=0,mSubclass=0,mProtocol=0,minterface=[Landroid.os.Parcelable;@40f9e3b0]

活动(1529):打开成功

D/UsbRequestJNI(1529):初始

D/ViewRootImpl(1529): pckname=com.android.missilelauncher

I/进程(167):发送信号。PID:1529 SIG:3

I/dalvikvm(1529):线程ID=3:对信号3作出反应

D/dalvikvm(1529):线程ID=11:撤消后仍挂起(sc=1 dc=1)

I/dalvikvm(1529):将堆栈跟踪写入“/数据/anr/跟踪。txt'

I/ActivityManager(167):显示com.android.missilelauncher/.MissileLauncherActivity:3s791ms

I/ActivityManager(167):不再需要com.Android电子邮件(pid 1266):隐藏#16

芬斯基(696):[1]5。onFinished:安装状态复制成功。

共有1个答案

邢永安
2023-03-14

根据我在读了Luksprog的评论后所做的研究,以下是实际的代码解决方案:

>

  • 删除znum=(TextView)findViewById(R.id.tvZnum);从我的OnCreate。
  • 替换znum.set文本("help");使用此代码:

            this.runOnUiThread(new Runnable() {
                public void run() {
                    ((TextView) findViewById(R.id.tvZnum)).setText("help");
                }
            });
    

    我认为这样做的结果是将setText操作添加到主UI线程中的队列中。

  •  类似资料:
    • 以下操作会在运行时导致异常: java.lang.VerifyError:操作数堆栈上的类型错误异常详细信息:location:com/sun/net/httpserver/spi/httpserverprovider$1.run()ljava/lang/object;@27:invokestatic原因:类型“sun/net/httpserver/defaulthttpserverprovide

    • 我正在使用Android应用程序,我想以某种方式打印HashMap的键和值。假设以下是HashMap的内容: 我想以这样一种方式打印HashMap键和值,即字母键首先按字母顺序打印,然后是数字键按升序打印: 我现在做的是: > < li> 获取密钥集并将其保存到数组列表中 使用比较器对数组列表进行排序 使用排序列表打印出地图中的值 这是我的代码: 到目前为止,它还在工作,但是在某些情况下,我没有得

    • 我用ASP.NET c#和angular 8开发了一个web API。我尝试在服务器端(使用NPOI)将一些数据从Oracle导出到Excel文件,并在客户端下载。我可以看到内存流有数据,但是在“返回响应”中,它没有返回给客户端,而是再次调用了函数。这是我的代码: 超文本标记语言: 键入脚本: API 控制器: DAL:(生成excel的最后一个函数。) 这是我在chrome调试器中看到的:[Ne

    • 在我开始这看似很长的一段之前,我想对我可能收到的任何建议/建议表示感谢。朱约翰 我开发了一个简单的测试来帮助我理解spring的声明性(@Transactional)事务管理框架如何与spring的RESTful web服务结合使用。 为此,我开发了以下RESTful控制器: 其中,“tester”是以下服务类的bean,并自动连接到此控制器。类中唯一的方法是事务性的: 在上面,GenericDB

    • 我正在尝试使用spring Boot运行一个web应用程序。 将密码映射为硬编码值。 我的问题是:当应用程序运行并且在主类上使用注释时,只要它命中URL就会发生以下异常: javax.servlet.ServletException:在org.springframework.web.servlet.dispatcherservlet.render(dispatcherservlet.java:13

    • 我正在试着检查用户是在Iphone上还是在Android上 当我注释这行代码时,应用程序运行良好