2017-12-11 6 views
1

휴대 전화 블루투스 기기와 페어링 된 프로그램을 만들고, 사용자에게 표시 할 주소를 보여 주며, 사용자가 휴대 전화에서 Bt를 사용하도록 설정 한 경우 정상적으로 작동합니다. . 데이터가 arrayList duplicates에 추가되도록하지 않으면 문제가 발생합니다. while 루프를 사용하여 Bt 모듈을 켠 후에 쌍을 이루는 장치 만 검사합니다. onResume()에서 이러한 작업을 수행하는 좋은 방법입니까?notifyDataSetChanged()는 기존 arrayList 내용을 복제합니다.

답변

1

String이 데이터 원본 목록에 이미 있는지 확인하는 것이 좋습니다. 이 같은 것

for (BluetoothDevice device: pairedDevice) { 
    String name = device.getName(); 
    String address = device.getAddress(); 
    String toBeAdded = address + " " + name; 
    if (!QueryDevices_final.contains(toBeAdded) { 
      QueryDevices_final.add(toBeAdded); 
      arrayAdapter.notifyDataSetChanged(); 
     } 
    } 
0

checkBluetoothState()를 onCreate 메소드에 넣지 않습니까? 결과에 따라 배열 생성 항목을 호출할까요?

앱 개발 방식에 따라 onResume을 두 번 이상 호출 할 수 있습니다. 이를 방지하려면, 당신은 할 수 있습니다

  • 공유 환경 설정/플래그를 생성하고 (사실 = firstRun을하고 한 번 실행하면 거짓으로 업데이트) 한 번만 호출 한 다음 배열 생성 및 업데이트가에 의존하게 플래그,

  • 해당 클래스 내에 공용 변수를 만들고 처음 경우에만 코드를 실행하십시오. 마지막에 변수를 변경하십시오.

  • onResume이 한 번만 실행되도록 활동을 구현하는 방식을 변경하십시오.

당신은이 대답을 확인하고 응용 프로그램을 두 번 onResume 호출되는 경우 이해하려고 할 수

: Why is my onResume being called twice?