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

Posted

技术标签:

【中文标题】Android - 在自定义对话框中获取组件的句柄【英文标题】:Android - Getting the handle to components in a Custom Dialog 【发布时间】:2011-12-25 17:40:31 【问题描述】:

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

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

但是,我对此句柄无能为力。当我尝试为 EditText 句柄设置 setText() 或者为我的 xml 中定义的按钮之一设置 onClickListener 时,我的应用程序崩溃了。关于为什么会发生这种情况以及如何解决这个问题的任何想法?

另外,为什么我需要先创建一个 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】:

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

这样做:

dialog.setContentView(R.layout.customdialog);

【讨论】:

您好,感谢您指出这一点。我做出了改变。但是,当我尝试修改我拥有的各种元素的句柄时,我的代码仍然崩溃。

以上是关于Android - 在自定义对话框中获取组件的句柄的主要内容,如果未能解决你的问题,请参考以下文章

android怎么在自定义控件中弹出对话框!!!

如何在自定义对话框上显示进度对话框?

在自定义视图中获取android attr

在自定义视图中获取 LinearLayout 参考

如何在自定义验证器中获取另一个组件的值? [复制]

如何在自定义验证器中获取另一个组件的值? [复制]