마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

블루투스 검색목록으로 데이터 비교

0 추천
블루투스 현재 페어링 목록을 가져와 데이터비교를 할려고 했는데 잘안되서

블루투스 검색 목록으로 비교를 해봤는데 잘안되서 질문합니다.

1)

BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

BTArrayAdapter.add(device.getName());

BTArrayAdapter.notifyDataSetChanged();

String dname=device.getName().toString();

String name="홍길동";

if(dname==name){

tv3.setText("일치");

} else {

tv3.setText("불일치");

}

>>불일치

이부분에선 검색목록이 갱신?형태라 그런지 여러디바이스가 검색되면 이름이 계속

바껴서 안된다고 생각을해서

----------------------------------------------------------------------------

2)

AdapterView.OnItemClickListener itemClicklistener =

(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick (AdapterView<?> parent, View view,

int position, long id) {

String vo = (String)parent.getAdapter().getItem(position);

TextView tv4=(TextView)findViewById(R. id. text5);

tv4.setText(vo);

}

});

>> 불일치

이런식으로 검색 목록을 클릭하면 클릭한 기기 이름을

가져와서 비교를 해봤는데 이것도 안되더라고요...

불러오는 이름 형태가 다른건지 왜 그럴까요..
방법이 있을까요???
익명사용자 님이 2015년 6월 4일 질문
자바에서
==연산자는 주소를 비교할 때 사용하는 것이고,
자바에서 사용하는 문자열들은 Class형태이기 때문에
문자열 생성시 새로운 객체가 만들어지게 됩니다.
각기 다르게 만들어진 객체들은 예외가 있지만
보통 다른 주소값을 가지고 있기 때문에
==연산자를 사용하면 false를 리턴하게 됩니다.

문자열과 같은 객체의 내용을 비교하려면 equals()메소드를 사용하셔야 합니다.
if("홍길동".equals("임꺽정"))
이런식으로요

질문자분께서는
if(dname==name) 이 부분을
if(dname.equals(name))이렇게 바꿔주시면 되겠네요
와 친절한 설명과 답변 감사합니다. 막히는 부분이였는데 해결됐네요
 연산자를 잘못쓰고있었네요
 감사합니다

1개의 답변

+1 추천
== 해당 연산자는 숫자를 비교할때 쓰는 연산자 입니다.

오브젝트를 비교 하실때는 equals()를 사용하세용~~!
ThisPlus (46,920 포인트) 님이 2015년 6월 4일 답변
감사합니다..연산자를 잘못쓴거였군요;;
...