有时候,我们需要在一个activity中使用另一个activity中的控件,这时候就不能直接findViewById,不然会报错指向空对象,这时就需要像下面这样做。
LayoutInflater factory = LayoutInflater.from(当前类.this);
View layout = factory.inflate(R.layout.你要获取的另一个XML, null);
TextView textview = (TextView) layout.findViewById(R.id.控件ID);
上面这样的方法仅限在activity或Fragment中引入,但是如果想引入弹出的自定义的dialog中的控件该怎么办呢?这里以使用dialog中的Edittext为例。
SettingDialog.java是我自定义的dialog,其中里面包含几个Editext。效果图如下:
这里我想在弹出这个dialog的Activity中使用dialog中的控件,那么应该这么办:
先在Activity中声明这个dialog
private SettingDialog settingDialog =new SettingDialog(this, R.style.MyDialog);//括号里面的是SettingDialog的构造器SettingDialog(Context context,int theme);
然后再activity声明想使用的dialog中的控件(这里我以“服务器IP地址的Editext为例”)
private EditText server_ip;// 对话框的ip
server_ip = (EditText) settingDialog.findViewById(R.id.server_ip);
这样就可以将Dialog中的控件获取到了,接下来就可以正常按照一般的控件进行操作了。