Android - 获取自定义对话框中组件的句柄

时间:2011-11-09 22:25:32

标签: android android-layout android-emulator android-widget

我正在尝试在单击菜单中的选项时创建自定义对话框。我继续开始一个新的活动,Intent指向customTextMessageDialog。

能够使用“phoneNumber =(EditText)dialog.findViewById(R.id.customDialogPhoneNumber1)”等代码获取我的customdialog.xml文件中定义的任何小部件的句柄;

但是,我无法对此句柄做任何事情。我尝试为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);
}
}

1 个答案:

答案 0 :(得分:0)

在您的代码中,您将Activity的contentView设置为customDialog。您需要将对话框的布局设置为该布局。阅读this

这样做:

dialog.setContentView(R.layout.customdialog);