从另一个类访问组件时获取空指针

时间:2011-03-24 14:31:28

标签: android

我开发了一个扩展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();

2 个答案:

答案 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)。