내 스캐너 클래스가 응용 프로그램을 확장하고 BeaconConsumer를 구현합니다. BeaconManager를 바인드하거나 바인딩 해제하려고하면 NullPointerException이 발생합니다.메서드 내에서 BeaconManager.bind를 실행할 때 오류가 발생했습니다. ALTBeacon
public class Scanner extends Application implements BeaconConsumer{
private BeaconManager beaconManager;
@Override
public void onCreate() {
try {
super.onCreate();
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout(" m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
}
catch (Exception e){
e.printStackTrace();
}
}
public void startScan(long period){
try {
if (beaconManager==null) {
beaconManager = BeaconManager.getInstanceForApplication(Scanner.this);
beaconManager.bind(Scanner.this);
beaconManager.setForegroundScanPeriod(period);
beaconManager.updateScanPeriods();
}
}
catch (Exception e){
e.printStackTrace();
}
}
public void stopScan(){
beaconManager.unbind(Scanner.this);
}
나는 다음과 같은 오류가 발생합니다 :
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.altbeacon.beacon.BeaconManager.bind(org.altbeacon.beacon.BeaconConsumer)' on a null object reference
이 작업을 onCreate() 메서드 내부에서 수행하면 문제가 없습니다. – Timmy
언제'startScan'을 부를까요? beaconManager가 초기화되기 전에 할 수 있을까요? – donfuxx
MainActivity에서 onCreate() 메소드 안에 새 Scanner 객체를 만들고 버튼을 사용하여 startScan을 실행합니다. – Timmy