2016-01-12 2 views
0

Я начал программировать BLE113 и Android. Я следовал рекомендациям с этого сайта:Android-приложение рушится каждый раз, когда я его запускаю

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

Все работало замечательно, когда я последовал за учебник. Затем я начал играть с кодом. Вместо того, чтобы читать расстояние и UUID на терминале Android, я решил прочитать его в приложении. Приложение закрывается каждый раз, когда я запускаю его и получаю следующее сообщение: «К сожалению, имя приложения остановлено». Я действительно не понимаю, почему это так. Вот код, когда мое приложение падает:

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

Я начал Программирование Android 4 недели назад и до сих пор обучение, я действительно не знаю, почему я получаю это сообщение. Любые предложения или отзывы приветствуются.

+0

Если вы используете Android Studio, нажмите на «Android Monitor», на колонтитуле IDE, и увидеть, где код происходит сбой. Отправьте этот журнал, чтобы помочь в ответах. –

+0

Возможно, вы пытаетесь вызвать findViewById на что-то другое, кроме Id? Если это так, вам придется использовать фактический идентификатор или getIdentifier для решения проблемы. – Alex1620

+0

Я понятия не имею, как использовать монитор Android, чтобы найти, где сбой кода :(, Не могли бы вы провести меня через? – blackknight316

ответ

0

Я не знаю, о радиомаяке вещи ... но, как я предполагаю,

что метод didRangeBeaconsInRegion вызывается из другого потока, который не является основным потоком пользовательского интерфейса.

В андроиде необходимы работы, связанные с UI, в основном потоке, и связанные с сетью работы должны выполняться в отдельном потоке.

Я думаю, что этот маячок использует сетевое соединение в другом потоке и вызывает этот метод в своем сетевом потоке.

Попробуйте использовать обработчик для отправки сообщения в основной поток для обновления пользовательского интерфейса.

1

Вы всегда должны использовать инструменты отладки, чтобы получать ошибки с помощью 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()); 

В противном случае вы бы переписать его

+0

Я пробовал этот метод и до сих пор не повезло. Я не понимаю, почему он это делает. Любая помощь будет принята с благодарностью! – blackknight316

+0

@ blackknight316 Какая ошибка вы получение – meda

+0

Я получаю следующее сообщение, и приложение закрыто: «К сожалению, AltBeacon остановился». – blackknight316

Смежные вопросы