2011-11-09 3 views
2

메뉴의 옵션 클릭으로 사용자 지정 대화 상자를 만들려고합니다. Intent가 customTextMessageDialog를 가리키는 새로운 활동을 시작하겠습니다.안드로이드 - 사용자 지정 대화 상자에서 구성 요소에 대한 핸들 얻기

I 오전 같은 코드를 사용하여 내 customdialog.xml 파일에 정의 된 위젯의에 핸들을 얻을 수 "PHONENUMBER = (글고) dialog.findViewById (R.id.customDialogPhoneNumber1를);"

그러나이을 사용하면 I 을 수행 할 수 없습니다. EditText 핸들에 setText()를 시도하거나 내 xml에 정의 된 버튼 중 하나에 onClickListener를 설정하면 응용 프로그램이 충돌합니다. 왜 이런 일이 벌어지고 있으며 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까?

또한 왜 그 인스턴스에서 findViewById를 호출하기 전에 Dialog의 인스턴스를 먼저 만들어야합니까? 코드에서

public class customTextMessageDialog extends Activity 
{ 
    EditText phoneNumber; 
    EditText message; 
    Button cancelButton; 
    Button sendButton; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.customdialog); 
    Dialog dialog = new Dialog(this); 
    phoneNumber = (EditText)dialog.findViewById(R.id.customDialogPhoneNumber1); 
    //phoneNumber.setTextColor(R.color.gray); 
    //phoneNumber.setText("ex: 4127214544"); 
    message = (EditText)dialog.findViewById(R.id.customDialogMessage1); 
    cancelButton = (Button)dialog.findViewById(R.id.customDialogCancelButton1); 
    cancelButton.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 
      finish(); 

     } 
    }); 
    sendButton = (Button)dialog.findViewById(R.id.customDialogPhoneNumber1); 
} 
} 

답변

0

당신은 customDialogActivity의있는 contentView를 설정한다. 대화 상자의 레이아웃을 해당 레이아웃으로 설정해야합니다. this을 읽으십시오.

이 작업을 수행 :

dialog.setContentView(R.layout.customdialog); 
+0

안녕, 지적 해 주셔서 감사합니다. 나는 변화를 만들었다. 그러나, 내가 가진 다양한 요소 핸들을 수정하려고하면 내 코드가 여전히 충돌합니다. – roro

관련 문제