2012-06-14 3 views
3

안드로이드에서 내 응용 프로그램에 메시지를 보내려면 다음 코드를 사용했습니다. 안드로이드에서 메시지 보내기

package wishme.code; 


import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class Activity2 extends Activity{ 

    public void onCreate(Bundle savedInstancestate) { 
     super.onCreate(savedInstancestate); 
     setContentView(R.layout.main2); 
     Button previous=(Button) findViewById(R.id.button_prev); 
     Button send=(Button) findViewById(R.id.button_send); 
     EditText ph_no=(EditText) findViewById(R.id.edit_phone); 
     EditText msg=(EditText) findViewById(R.id.edit_msg); 

    } 
    public void prevclickhandler(View view) 
    { 
     switch(view.getId()) 
     { 
     case R.id.button_prev: 
     Intent intent=new Intent(); 
     setResult(RESULT_OK,intent); 
     finish(); 
     break; 
     case R.id.button_send: 
      **String ph_no= ph_no.getText().tostring();** 
    }} 
} 

그러나 라인이 강조 내가이 문제를 해결할 수있는 방법을 gettext에이 유형 문자열 에 대한 정의되지 방법 입니다 오류가 있습니다.

+0

을 ph_no_string처럼 뭔가로 문자열 ph_no의 이름을 변경, 당신은 그 선언 할 필요가 없습니다 'onCreate'에서 버튼과 EditText 변수를 수정하려고하지 않는다면 말입니다. 시스템은 XML 파일을 읽을 때 ('setContentView' 중에) 생성하고 설정합니다. 'findViewById' 함수는 기존 변수를 참조 할 수있는 유일한 방법입니다. – eternalmatt

답변

4

변수는 다른 범위로 정의됩니다. ph_no EditText는 onCreate에 정의되어 있으며 클릭 핸들러에서는 사용할 수 없습니다. 실제로 getText()를 호출하는 ph_no는 정의 할 문자열입니다.

대신 Activity 내에서 EditText를 인스턴스 변수로 정의하고 문자열 이름을 변경하여 변수 이름이 충돌하지 않도록 할 수 있습니다. 그것 때문에 선호를 얻을

String ph_no = ((EditText) findViewById(R.id.edit_phone)).getText().toString(); 
+0

내가 원하는 것은 변수 EditText ph_no에 액세스하는 것입니다. 내 처리기를 끼어 넣으십시오. – Kamran

+0

저에게 솔루션이 잘 작동합니다. – Kamran

+0

그 코드를 많이 쓰는 사람이라면 매번 findViewById를 수행 할 필요없이 모든 함수에서 참조 할 수있는 인스턴스 변수를 만들 수 있습니다. – brianestey

1

지역 변수로 문자열

String str_ph_no= ph_no.getText().tostring(); 

에 대한의 diffent 이름을 사용

또 다른 방법은 당신의 글고 치기에 액세스해야하므로 같은 경우 단지 findViewById를 호출하는 것입니다 둘 다 "ph_no"를 문자열로 간주합니다.

0

내가 원하는 것 :

String ph_no_string = ph_no.getText().toString(); 

먼저 ph_no를 EditText로 정의하지만 나중에 ph_no를 문자열로 다시 정의합니다.

0

ph_no 우리의 활동에 정의 된 지역 변수이 시도되지 않습니다

public class Activity2 extends Activity{ 
private EditText ph_no; 

public void onCreate(Bundle savedInstancestate) { 
    ... 
    ph_no=(EditText) findViewById(R.id.edit_phone); 
    ... 

을 그리고 다른 보조 노트에

+0

내가 원하는 것은 내 clickhandler에서 ph_no에 액세스하는 것입니다. 나는 당신이 말하는 것을 시도했지만 같은 결과를 얻는다. – Kamran