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 - 在自定义对话框中获取组件的句柄的主要内容,如果未能解决你的问题,请参考以下文章