为什么在这里添加按钮监听器就出错

angel725 2010-08-26 10:32:23
ListViewmain.java
public class listviewmain extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);

Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new btn_lin());

ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
map1.put("name", "aaa");
map1.put("ip", "192.168.0.0");
map2.put("name", "bbb");
map2.put("ip", "192.168.0.1");
map3.put("name", "ccc");
map3.put("ip", "192.168.0.2");
list.add(map1);
list.add(map2);
list.add(map3);
SimpleAdapter listadapter = new SimpleAdapter(this, list,
R.layout.user, new String[] { "name", "ip" }, new int[] {
R.id.name, R.id.ip });
setListAdapter(listadapter);
}
private class btn_lin implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}

}

}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"
/>
<Button android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ok"
/>
</LinearLayout>


user.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/name"
android:layout_width="180dip"
android:layout_height="30dip"
android:singleLine="true"
/>
<TextView android:id="@+id/ip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>


一个例子(运行完全正常),
原来是没有这两行的
Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new btn_lin());

我加了这后就出错
08-26 14:32:07.101: ERROR/AndroidRuntime(236): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.listview/com.android.listview.listviewmain}: java.lang.NullPointerException
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.os.Looper.loop(Looper.java:123)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.ActivityThread.main(ActivityThread.java:4203)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at java.lang.reflect.Method.invokeNative(Native Method)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at java.lang.reflect.Method.invoke(Method.java:521)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at dalvik.system.NativeStart.main(Native Method)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): Caused by: java.lang.NullPointerException
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at com.android.listview.listviewmain.onCreate(listviewmain.java:21)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
08-26 14:32:07.101: ERROR/AndroidRuntime(236): ... 11 more

就是那空指针异常
只要把btn.setOnClickListener(new btn_lin());这行注释掉就好了。

为什么???
...全文
433 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrGary 2011-12-26
  • 打赏
  • 举报
回复
试一下让Listviewmain继承Activity而不是ListActivity看看行不行。

如果继承ListActivity,对于以上错误,其实可能是因为要实现对ListView中setOnItemClick的事件监听而去继承了LiseActivity,但是却没有ListView的标签,网上有说过只要在布局文件中添加如下代码即可:

<ListView
android:id="@android:id/list" 或android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"> </ListView>

上面代码不会在R.java里面生成ID,而会在系统内部生成,所以在Listviewmain代码中,应该这样写:

setContentView(android.R.id.list);

我记得这样可以解决问题,只要你其他部分不出问题,看看行不行,不行在我QQ493208515回个信儿~

lan8795263 2011-07-12
  • 打赏
  • 举报
回复
继承ListActivity的时候你不是重写了一个user.xml么,并且你的布局用的就是这个user,但是你的user.xml里面并没有任何的button,你只在main.xml里面写了一个button那肯定是不对的,而且继承了ListActivity之后的button不能响应任何事件,需要重写一个类继承BaseAdapter,大约就是这样了,所以没有那两行肯定是对的
li2534688 2011-01-23
  • 打赏
  • 举报
回复
ListActivity本身是实现了ListView的Activity,你在main.xml在加上自然会产生冲突
angel725 2010-08-27
  • 打赏
  • 举报
回复
改成android:id="@android:id/list"可以了。。


刚才好像是AVD的问题,,,
谢谢


可是为什么引号里面要这么写呢"@android:id/list
不是@+id
angel725 2010-08-27
  • 打赏
  • 举报
回复
改成android:id="@android:id/list"
也是不行的,,试过几次了。。
vclongking 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kenshintang1215 的回复:]

引用 8 楼 angel725 的回复:

引用 6 楼 kenshintang1215 的回复:
引用 2 楼 angel725 的回复:

可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException:……
[/Quote]哈哈 , 韩国的日子看来还不够苦 , 居然还有时间上CSDN!
Hinagi 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 angel725 的回复:]

引用 6 楼 kenshintang1215 的回复:
引用 2 楼 angel725 的回复:

可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException: Unable to start activit……
[/Quote]

要把listview的ID改成android:id="@android:id/list"
angel725 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kenshintang1215 的回复:]
引用 2 楼 angel725 的回复:

可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.li……
[/Quote]

main.xml里有ListView啊
angel725 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhq56030207 的回复:]
引用 2 楼 angel725 的回复:
可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.list……
[/Quote]

改哪个也不行
Hinagi 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 angel725 的回复:]

可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.listview/com.android.list……
[/Quote]

这个是说你的Layout里面没有listView,你继承的是ListActivity.
angel725 2010-08-27
  • 打赏
  • 举报
回复
我也不知道啊,找不出来啊,,main文件就在上面,你帮你看看啊。
纠结的木棉花 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 angel725 的回复:]
可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.listview/com.android.listv……
[/Quote]

<ListView android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"
按照出错情况,是不是红色部分应该改成list呢???
纠结的木棉花 2010-08-27
  • 打赏
  • 举报
回复
是不是你的main文件错误了呢?那句话是不能注销的???
angel725 2010-08-27
  • 打赏
  • 举报
回复
可是这个不注销,//setContentView(R.layout.main);运行会出错:
08-27 08:15:24.255: ERROR/AndroidRuntime(407): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.listview/com.android.listview.listviewmain}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

没弄明白错在哪。。

只要注销就正常
yyy025025025 2010-08-26
  • 打赏
  • 举报
回复
你把这句注释了
//setContentView(R.layout.main);


系统根本就没有inflate main.xml, 哪来的btn这个button呢?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧