2011-10-30 4 views
0

지금 내 사랑은 사라 졌어 ...이 간단한 일을하기 위해 30 분 동안 노력했지만 너무 열심히 실패했다. 아마도 내가 직접 안드로이드, 자바로 시작했기 때문일 것이다 ... 나는 C++을 공부했다.버튼 텍스트 비교

String test = new String(); 
    test = "google"; 
:
<Button android:text="Button" 
    android:layout_width="wrap_content" 
    android:id="@+id/button1" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginBottom="108dp"> 
    </Button> 

그리고 내 자바 파일에

나는이 같은 문자열이 있습니다 전에

...이 할 너무 쉬웠다 C++에서 나는 XML 파일에서 버튼이

나는 onclick 수신기를 이미 설정했습니다. 버튼이 없으니 아무 문제 없습니다. 온 클릭 (onclick을 코드가 이미 만들어) buttonx의 텍스트 =입니다 문자열 테스트 "구글"경우

Button buttonx = (Button)findViewById(R.id.button1); 

는 어떻게 비교할 수 있습니다 경우 내 질문입니다.

내가 gettext에,의 setText로 시도

...하지만 아무것도 ...

답변

2

확인을 클릭합니다. 우선 첫번째 일 : String은 Java에서 C++로 완전히 다릅니다. 사실, 객체는 완전히 다른 모든 라운드입니다.

String test = new String(); 
test = "google"; 

당신이 생각하는대로하지 않습니다.

이 작업은 새로운 빈 String 개체를 만들고이 개체에 대한 참조를 test에 저장합니다. 다음 줄은 상수 문자열 "google"에 대한 참조를 test에 저장하고 이전 줄에서 생성 한 빈 String을 가비지 수집 대상으로 만듭니다. 이것은 두 번째 줄이 String 클래스의 = 연산자를 실제로 호출하는 C++과 완전히 다릅니다. Java에서 포인터가되는 모든 것을 생각할 수 있습니다. 그렇기 때문에 Java의 할당은 C++에서 포인터 할당과 비슷하게 동작합니다 (실제로는 그렇지 않습니다).

질문으로 돌아 가기. 이 같은

뭔가 작동 할 수 있습니다 :

String test = "google"; 
Button b = ...; 
if (test.equals(b.getText()) { 
    // whatever 
} 

자바와 C가 일부 구문 유사성을 공유 ++하지만 그들은 정말 완전히 다른 언어 것을 기억하십시오. Java 참조는 포인터처럼 작동하지만 실제로는 그렇지 않습니다.

정말.

1
String test = new String(); 
test = "google"; 

Button buttonx = (Button)findViewById(R.id.button1); 
if (test.equals(buttonx.getText())) { 
    // it's equal 
} 
0
if (button.getText().toString().equalsIgnoreCase(test)) 
    Toast.makeText(this, "Button text equals!", Toast.LENGTH_SHORT).show(); 
else 
    Toast.makeText(this, "Button text is not the same.", Toast.LENGTH_SHORT).show();