Android 从其他类访问组件时获取空指针

Android 从其他类访问组件时获取空指针,android,Android,我开发了一个扩展对话框的类a 我使用以下代码对A类进行了充气: View layout = inflater.inflate(R.layout.custom_alert, null, false); 在custom\u警报布局文件中,我添加了一个带有android:id=“@+id/edit”的EditText 场景如下: 用户单击特定的列表项,打开一个对话框,用户在其中输入值(编辑文本) 我有一个活动屏幕,考虑B类,扩展活动。 我从B班打电话给A班 当用户在对话框中输入值并单击OK按钮时,我

我开发了一个扩展对话框的类a

我使用以下代码对A类进行了充气:

View layout = inflater.inflate(R.layout.custom_alert, null, false);
custom\u警报
布局文件中,我添加了一个带有
android:id=“@+id/edit”
的EditText

场景如下:

用户单击特定的
列表项
,打开一个对话框,用户在其中输入值(编辑文本)

<>我有一个活动屏幕,考虑B类,扩展活动。

我从B班打电话给A班

当用户在对话框中输入值并单击OK按钮时,我需要检索该值并将其存储在数据库中

提供下面的代码片段

LayoutInflater inflater = getLayoutInflater();

inflater.inflate(R.layout.custom_dialog, null);


EditText txt = (EditText) findViewById(R.id.edit);

String value = txt.getText().toString();
但是,即使在膨胀了
自定义_对话框之后
,我也无法获取文本,并且出现空指针异常

我正在粘贴更新代码。。。仍然没有获取EditText值,仅为null

对话框生成器=新建对话框(此对话框)

视图=LayoutFlater.from(SampleScreen.this).充气(R.layout.custom\u警报,空); builder.setContentView(视图)

EditText名称EditTXT=(EditText)view.findViewById(R.id.edit)

字符串值=nameEditTxt.getText().toString()

LayoutInflater#充气
返回充气视图,您应该将其调用
findViewById
on

View view = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null);
EditText text = (EditText) view.findViewById(R.id.edit);
确保以某种方式将其链接到视图层次结构:

dialog.setContentView(view);
或类似操作。

LayoutInflater#充气
返回充气视图,您应将其称为
findViewById
打开

View view = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null);
EditText text = (EditText) view.findViewById(R.id.edit);
确保以某种方式将其链接到视图层次结构:

dialog.setContentView(view);

或类似。您的代码片段不提供调用它的上下文,但您还需要确保它是从Android对象所在的上下文调用的-例如,不是在构造函数中,而是在对话框的一个生命周期方法(例如onCreate)中调用的.

您的代码片段不提供调用它的上下文,但您还需要确保它是从Android对象所在的上下文中调用的-例如,不是在构造函数中,而是在对话框的生命周期方法之一(例如onCreate)中调用的.

我认为使用活动的上下文在onCreateDialog中这样做很好。至少,我一直是这样做的。我认为在使用活动上下文的onCreateDialog中这样做会很好。至少,我是这样做的。谢谢你的回复,null指针异常消失了,但是我返回的数据为null,而这是不正确的。未提取在EditText上输入的数据。EditText lapNameEditTxt=(EditText)view.findViewById(R.id.edit);字符串值=lapNameEditTxt.getText().toString();您必须第二次调用dialog.findviewbyd(R.id.edit)。你不能膨胀一个全新的视图而期望检索屏幕上的信息。你能详细解释一下吗。。要从第二次调用的位置调用的findviewbyd(R.id.edit)。。如果您粘贴伪代码/示例代码会很好吗?当然。您想在哪里调用它?感谢您的回复,null指针异常已经消失,但是我返回的数据为null,而它是不正确的。未提取在EditText上输入的数据。EditText lapNameEditTxt=(EditText)view.findViewById(R.id.edit);字符串值=lapNameEditTxt.getText().toString();您必须第二次调用dialog.findviewbyd(R.id.edit)。你不能膨胀一个全新的视图而期望检索屏幕上的信息。你能详细解释一下吗。。要从第二次调用的位置调用的findviewbyd(R.id.edit)。。如果您粘贴伪代码/示例代码会很好吗?当然。你想叫它到哪里去?