2011-11-09 81 views
2

我正嘗試在菜單中單擊某個選項時創建自定義對話框。我繼續開始一個新的活動,其中Intent指向customTextMessageDialog。Android - 獲取自定義對話框中組件的句柄

時能夠得到手柄任何使用類似的代碼在我customdialog.xml文件中定義的小部件「phoneNumber的=(EditText上)dialog.findViewById(R.id.customDialogPhoneNumber1);」

但是,我不能用這個句柄做任何事情。當我嘗試爲EditText句柄設置Text()或者爲我的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

在你的代碼是在Activity的內容查看設置爲customDialog。您需要將對話框的佈局設置爲該佈局。閱讀this

這樣做:

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

您好,感謝您指出了這一點。我做了改變。但是,當我嘗試修改我擁有的各種元素的句柄時,我的代碼仍然崩潰。 – roro