将原始xml内容显示在TextView中出错

iceli 2014-03-11 10:40:59
在/res/xml/下,创建test.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<customer name="tom" age="20" gender="male" email="tom@yahoo.com"/>
<customer name="kite" age="21" gender="male" email="kite@yahoo.com"/>
</resources>

在res/layout/下,创建test_xml.xml布局文件,添加一个Button和TextView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
android:text="@string/test_xml"
android:id="@+id/xmlTestButton01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button />

<TextView
android:text=""
android:id="@+id/xmlContentTextview01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</RelativeLayout>

创建一个TestXMLActivity类
package com.amaker.ch03.xml;
import com.amaker.ch03.xml.R;

import java.io.IOException;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class TextXmlActivity extends Activity {
private TextView myTextView;
private Button myButton;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.test_xml);

myTextView=(TextView)findViewById(R.id.xmlContentTextview01);
myButton=(Button)findViewById(R.id.xmlTestButton01);

myButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int counter=0;
StringBuilder sb=new StringBuilder("");
Resources r=getResources();
XmlResourceParser xrp=r.getXml(R.xml.test);
try{
while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
if(xrp.getEventType()==XmlResourceParser.START_DOCUMENT){
String name=xrp.getName();
if(name.equals("customer")){
counter++;
sb.append("第"+counter+"条客户信息:"+"\n");
sb.append(xrp.getAttributeValue(0)+"\n");
sb.append(xrp.getAttributeValue(1)+"\n");
sb.append(xrp.getAttributeValue(2)+"\n");
sb.append(xrp.getAttributeValue(3)+"\n");
}else if(xrp.getEventType()==XmlPullParser.END_TAG){
}else if(xrp.getEventType()==XmlPullParser.TEXT){
}
xrp.next();
}
myTextView.setText(sb.toString());}
}catch(XmlPullParserException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
});
}
}

报错
E/AndroidRuntime(307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.amaker.ch03.xml/com.amaker.ch03.xml.TextXmlActivity}: java.lang.RuntimeException: Binary XML file line #16: You must supply a layout_width attribute.
但是我确实有提供layout_width属性,这种错误怎么解决?

...全文
200 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceli 2014-03-12
  • 打赏
  • 举报
回复
期待大牛解答。
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 4 楼 Java_Devil 的回复:
[quote=引用 3 楼 woaili03019 的回复:] [quote=引用 1 楼 Java_Devil 的回复:] <Button android:text="@string/test_xml" android:id="@+id/xmlTestButton01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button /> 这里有问题,你上面“/>”已经有结束符号了,后面又加一个<Button/>
<Button />和<Button ></Button>是一样的吗?[/quote]是一样的。用一种方式就行了。[/quote] 还是报错 03-11 04:46:00.501: E/AndroidRuntime(275): FATAL EXCEPTION: main 03-11 04:46:00.501: E/AndroidRuntime(275): java.lang.NullPointerException 03-11 04:46:00.501: E/AndroidRuntime(275): at com.amaker.ch03.xml.TextXmlActivity$1.onClick(TextXmlActivity.java:42)
绝世酱油瓶 2014-03-11
  • 打赏
  • 举报
回复
引用 3 楼 woaili03019 的回复:
[quote=引用 1 楼 Java_Devil 的回复:] <Button android:text="@string/test_xml" android:id="@+id/xmlTestButton01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button /> 这里有问题,你上面“/>”已经有结束符号了,后面又加一个<Button/>
<Button />和<Button ></Button>是一样的吗?[/quote]是一样的。用一种方式就行了。
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 1 楼 Java_Devil 的回复:
<Button android:text="@string/test_xml" android:id="@+id/xmlTestButton01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button /> 这里有问题,你上面“/>”已经有结束符号了,后面又加一个<Button/>
<Button />和<Button ></Button>是一样的吗?
  • 打赏
  • 举报
回复
xml文件中去掉<Button />
绝世酱油瓶 2014-03-11
  • 打赏
  • 举报
回复
<Button android:text="@string/test_xml" android:id="@+id/xmlTestButton01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button /> 这里有问题,你上面“/>”已经有结束符号了,后面又加一个<Button/>
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 6 楼 cclovescw 的回复:
还是报错的话,xrp.getName()这个可能是空的
为什么会是空的?如果是空的,需要怎么改?
绝世酱油瓶 2014-03-11
  • 打赏
  • 举报
回复
引用 5 楼 woaili03019 的回复:
[quote=引用 4 楼 Java_Devil 的回复:] [quote=引用 3 楼 woaili03019 的回复:] [quote=引用 1 楼 Java_Devil 的回复:] <Button android:text="@string/test_xml" android:id="@+id/xmlTestButton01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button /> 这里有问题,你上面“/>”已经有结束符号了,后面又加一个<Button/>
<Button />和<Button ></Button>是一样的吗?[/quote]是一样的。用一种方式就行了。[/quote] 还是报错 03-11 04:46:00.501: E/AndroidRuntime(275): FATAL EXCEPTION: main 03-11 04:46:00.501: E/AndroidRuntime(275): java.lang.NullPointerException 03-11 04:46:00.501: E/AndroidRuntime(275): at com.amaker.ch03.xml.TextXmlActivity$1.onClick(TextXmlActivity.java:42)[/quote]你这个错已经与布局文件无关了。报的第42行 空指针。你的第42行String name=xrp.getName();,这里你可以自己断点调试下了
  • 打赏
  • 举报
回复
还是报错的话,xrp.getName()这个可能是空的

80,351

社区成员

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

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