有時候,我們需要在一個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中的控件獲取到了,接下來就可以正常按照一般的控件進行操作了。
