Android中findViewById()獲取控制元件後 報 空指標 錯誤
阿新 • • 發佈:2019-01-09
今天再做一個程式時,發現我使用findViewById(R.id.edit)獲取EditText時總是報空指標錯誤,我想不可能啊!!
最後從findViewById()下手,才發現原來此方法中的R.id.edit是從當前Activity或者Dialog的主佈局檔案xml中獲取。
比如:我的程式:
ListActivity類中:
。。。。。。。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
}
。。。。。
/**
* 顯示彈出的輸入視窗
* */
public void showInputDialog(FileBean fileBean) {
LayoutInflater layoutInflater = getLayoutInflater();
View layout = layoutInflater.inflate(R.layout.input_dialog,
(ViewGroup) findViewById(R.id.input_dialog));
EditText editText = (EditText)layout.findViewById(R.id.input_content);// 獲取輸入文字框 如果改成EditText editText = (EditText)this.findViewById(R.id.input_content);// 空指標錯誤
new AlertDialog.Builder(this)
.setTitle("重新命名檔案" + new File(fileBean.getPath()).getName())
.setView(layout)
.setPositiveButton("確定", new MyDialogListener(editText))
.setNegativeButton("取消", new MyDialogListener(editText)).show();
}
最後從findViewById()下手,才發現原來此方法中的R.id.edit是從當前Activity或者Dialog的主佈局檔案xml中獲取。
比如:我的程式:
ListActivity類中:
。。。。。。。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
}
。。。。。
/**
* 顯示彈出的輸入視窗
* */
public void showInputDialog(FileBean fileBean) {
LayoutInflater layoutInflater = getLayoutInflater();
View layout = layoutInflater.inflate(R.layout.input_dialog,
(ViewGroup) findViewById(R.id.input_dialog));
EditText editText = (EditText)layout.findViewById(R.id.input_content);// 獲取輸入文字框 如果改成EditText editText = (EditText)this.findViewById(R.id.input_content);// 空指標錯誤
new AlertDialog.Builder(this)
.setTitle("重新命名檔案" + new File(fileBean.getPath()).getName())
.setView(layout)
.setPositiveButton("確定", new MyDialogListener(editText))
.setNegativeButton("取消", new MyDialogListener(editText)).show();
}