Android - получение информации о компонентах в настраиваемом диалоге - PullRequest
2 голосов
/ 10 ноября 2011

Я пытаюсь создать собственное диалоговое окно по щелчку опции в меню.Я продолжаю, чтобы начать новое действие с Намерением, указывающим на customTextMessageDialog.

Я могу получить дескриптор для любого из виджетов, определенных в моем файле customdialog.xml, используя код, подобный "phoneNumber = (EditText) dialog.findViewById (R.id.customDialogPhoneNumber1); "

Однако я ничего не могу сделать с этим дескриптором .В тот момент, когда я пытаюсь установить setText () для дескриптора EditText или если я устанавливаю onClickListener для одной из кнопок, определенных в моем xml, мое приложение вылетает.Любая идея относительно того, почему это происходит и как я могу это исправить?

Кроме того, почему мне нужно сначала создать экземпляр Dialog, прежде чем вызывать findViewById для этого экземпляра?

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);
}
}

1 Ответ

0 голосов
/ 10 ноября 2011

В вашем коде вы устанавливаете для contentView Activity значение customDialog. Вы должны установить макет вашего диалога на этот макет. Прочитайте это .

Сделайте это:

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