繁体   English   中英

每次我运行Android应用程式时当机

[英]Android app is crashing each time I run it

我开始进行BLE113和Android编程。 我遵循了该网站的指导原则:

http://www.software7.com/blog/creating-a-beacon-app-for-android-in-less-than-10-minutes-from-scratch/

当我按照教程学习时,一切工作都很好。 然后我开始玩代码。 我没有在Android终端上读取距离和UUID,而是决定在应用程序上读取它。 每次我运行该应用程序时都会将其关闭,并显示以下消息:“不幸的是, 应用程序名称已停止”。 我真的不明白为什么。 这是我的应用崩溃时的代码:

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, org.altbeacon.beacon.Region region) {
    for (Beacon oneBeacon: beacons) {
       // Log.d(Tag, "distance:"+oneBeacon.getDistance() + "id:" +oneBeacon.getId1()+ "/" + oneBeacon.getId2()+"/" + oneBeacon.getId3());

        TextView distance = (TextView) findViewById(R.id.distanceText);
        distance.setText(""+oneBeacon.getDistance());

    }
}

这是它不会崩溃的时间:

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, org.altbeacon.beacon.Region region) {
    for (Beacon oneBeacon: beacons) {
       Log.d(Tag, "distance:"+oneBeacon.getDistance() + "id:" +oneBeacon.getId1()+ "/" + oneBeacon.getId2()+"/" + oneBeacon.getId3());

        //TextView distance = (TextView) findViewById(R.id.distanceText);
        //distance.setText(""+oneBeacon.getDistance());

    }
}

完整的代码在这里发布:

https://github.com/Boniface316/androidProjects#androidprojects

我4周前开始进行Android编程,现在仍在学习,我真的不知道为什么收到此消息。 任何建议或反馈,我们将不胜感激。

您应该始终使用调试工具在Eclipse或Android Studio中获取错误。 那是找到问题的最好方法

据我所知,您应该删除此方法的distance初始化。

声明为字段:

private TextView distance;

onCreate()初始化它

distance = (TextView) findViewById(R.id.distanceText);

然后

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, org.altbeacon.beacon.Region region) {
    for (Beacon oneBeacon: beacons) {
       // Log.d(Tag, "distance:"+oneBeacon.getDistance() + "id:" +oneBeacon.getId1()+ "/" + oneBeacon.getId2()+"/" + oneBeacon.getId3());
        distance.setText(distance.getText() +  " | "+oneBeacon.getDistance());
    }
}

还将循环代码更改为:

distance.setText(distance.getText() +  " | "+oneBeacon.getDistance());

否则你会覆盖它

我不知道信标的事...但是我猜,

从另一个线程(不是主UI线程)调用didRangeBeaconsInRegion方法。

在android中,与UI相关的工作需要在主线程中完成,而与网络相关的工作则必须在单独的线程中完成。

我猜这是信标事物在另一个线程中使用网络连接,并在其自己的网络线程中调用此方法。

尝试使用处理程序将消息发送到主线程以进行UI更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM