Android 从其他类访问组件时获取空指针
我开发了一个扩展对话框的类a 我使用以下代码对A类进行了充气: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按钮时,我
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)。。如果您粘贴伪代码/示例代码会很好吗?当然。你想叫它到哪里去?