簡體   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