展会信息港展会大全

Android中findViewById()h获取EditText 空指针问题
来源:互联网   发布日期:2016-01-06 19:16:34   浏览:2422次  

导读:今天再做一个程序时,发现我使用findViewById(R.id.edit)获取EditText时总是报空指针错误,我想不可能啊!!最后从findViewById()下手,才发现原来此方法中...

今天再做一个程序时,发现我使用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();

}

布局文件:

input_dialog.xml

<?xml version="1.0" encoding="utf-8"?>

<!-- 弹出输入对话框布局文件 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:orientation="horizontal" android:id="@+id/input_dialog">

<TextView android:id="@+id/input_hint" android:layout_width="60dip"

android:layout_height="50dip" android:textSize="15dip" android:text="@string/rename_file"></TextView>

<EditText android:id="@+id/input_content" android:minWidth="120dip"

android:layout_width="150dip" android:layout_height="50dip"></EditText>

</LinearLayout>

list_view.xml

<?xml version="1.0" encoding="utf-8"?>

<!-- 文件显示列表布局 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:orientation="vertical">

<TextView android:id="@+id/title" android:layout_width="fill_parent"

android:layout_height="wrap_content" android:text="@string/title">

</TextView>

<LinearLayout android:id="@+id/s_layout"

android:layout_width="wrap_content" android:layout_height="wrap_content">

<EditText android:id="@+id/t_search" android:layout_width="280dip"

android:layout_height="40dip" android:text="@string/search"

android:singleLine="true"></EditText>

<ImageButton android:id="@+id/b_search"

android:layout_width="40dip" android:layout_height="40dip"

android:background="@drawable/search"></ImageButton>

</LinearLayout>

<TextView android:id="@+id/cur_dir" android:layout_width="wrap_content"

android:layout_height="wrap_content"></TextView>

<ListView android:id="@id/android:list" android:layout_width="fill_parent"

android:layout_height="wrap_content" android:scrollbarSize="15dip"

android:fadingEdge="none" android:divider="#222553"

android:dividerHeight="2dip" android:cacheColorHint="#000000"></ListView>

</LinearLayout>

原因:因为EditText editText = (EditText)layout.findViewById(R.id.input_content);是从Dialog对话框布局layout中寻找ID为input_content的子元素

EditText editText = (EditText)this.findViewById(R.id.input_content);// 空指针错误因为是从this对象即当前ListActivity的布局List_view.xml中寻找ID为input_content的子元素EditText,而我们在List_view.xml布局文件中并无定义此元素故空指针错误 ,并且我们的目的并不是这样。。。。

只要理解findViewById就行了。。。。。

摘自魏艺荣的专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港