我开发了一个扩展Dialog的A类。
我使用以下代码夸大了A类:
View layout = inflater.inflate(R.layout.custom_alert, null, false);
在custom_alert
布局文件中,我添加了一个带有android:id="@+id/edit"
的EditText。
场景是这样的:
用户点击特定的listitem
,会打开一个对话框,用户输入一个值(编辑文本)。
我有一个活动屏幕,考虑扩展活动的B类。
从B班开始,我打电话给A班。
当用户在对话框中输入值并单击按钮确定时,我需要检索该值并将其存储在数据库中。
提供下面的代码段
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.custom_dialog, null);
EditText txt = (EditText) findViewById(R.id.edit);
String value = txt.getText().toString();
但是,即使在custom_dialog
膨胀之后,我也无法获取文本,并且我得到空指针异常。
我正在粘贴更新代码...仍未获取EditText值,仅为null
对话框构建器=新对话框(此)
View view = LayoutInflater.from(SampleScreen.this).inflate(R.layout.custom_alert,null); builder.setContentView(视图);
EditText nameEditTxt =(EditText)view.findViewById(R.id.edit);
String value = nameEditTxt.getText()。toString();
答案 0 :(得分:3)
LayoutInflater#inflate
会返回夸大的视图,您应该在其上调用findViewById
。
View view = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null);
EditText text = (EditText) view.findViewById(R.id.edit);
确保以某种方式将其链接到视图层次结构:
dialog.setContentView(view);
或类似。
答案 1 :(得分:0)
您的代码段不提供调用它的上下文,但您还需要确保从存在Android对象的上下文中调用它 - 例如,不是在构造函数中,而是在其中一个生命周期方法中对话框(例如onCreate)。