Java Android应用程序无法启动活动组件信息
我是一名新的Android程序员,最近,我在列表视图中使用pull解析器解析xml文件。在listview中解析时,我遇到了此异常Java Android应用程序无法启动活动组件信息,java,android,listview,exception,xmlpullparser,Java,Android,Listview,Exception,Xmlpullparser,我是一名新的Android程序员,最近,我在列表视图中使用pull解析器解析xml文件。在listview中解析时,我遇到了此异常 09-13 05:37:00.401: E/AndroidRuntime(1167): FATAL EXCEPTION: main 09-13 05:37:00.401: E/AndroidRuntime(1167): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exa
09-13 05:37:00.401: E/AndroidRuntime(1167): FATAL EXCEPTION: main
09-13 05:37:00.401: E/AndroidRuntime(1167): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.simplexmlpullapp/com.example.simplexmlpullapp.MainActivity}: java.lang.NullPointerException
那么接下来该怎么办呢?以便删除此异常。
我的代码是:
MainActivity.java
package com.example.simplexmlpullapp;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
ListView list;
String str;
ArrayList<Data> arrdata;
ArrayList<String> arrayofString, parcedCountry;
String textforinput = "<foo>Hello World!</foo>";
String parsedData = "";
XmlPullParser xmlPullParser;
ArrayAdapter<String>adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=(ListView)findViewById(R.id.li);
adapter=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,android.R.id.text1,arrayofString);
list.setAdapter(adapter);
try
{
InputStream is;
is=getAssets().open("countries.xml");
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null)
{
total.append(line);
}
//Log.e("File",""+total.toString());
parseCountries(total.toString());
}
catch (Exception e)
{
// TODO: handle exception
}
}
private void parseCountries(String string)
{
int eventType=0;
String countries = null;
boolean countryFlag=false;
ArrayList<String>parsedCountry=new ArrayList<String>();
try
{
xmlPullParser=XmlPullParserFactory.newInstance().newPullParser();
xmlPullParser.setInput(new StringReader(string));
eventType = xmlPullParser.getEventType();
}
catch (XmlPullParserException e) {
e.printStackTrace();
}
while(eventType!=XmlPullParser.END_DOCUMENT)
{
switch (eventType)
{
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if(xmlPullParser.getName().equalsIgnoreCase("country"))
{
countryFlag=true;
}
break;
case XmlPullParser.TEXT:
if(countryFlag)
{
countries=xmlPullParser.getText().toString().trim();
Log.i("parse_example", "country"+countries);
}
break;
case XmlPullParser.END_TAG:
if(xmlPullParser.getName().equalsIgnoreCase("country"))
{
parsedCountry.add(countries);
countryFlag=false;
}
break;
//end of switch
}
try {
eventType=xmlPullParser.next();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// arrayofString=new ArrayList<String>();
// for(int i=0;i<arrdata.size();i++)
// {
// Data data=arrdata.get(i);
// arrayofString.add(data.getCountry());
// Log.i("parse_example", "country"+countries);
// }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.example.simplexmlpullapp;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.StringReader;
导入java.util.ArrayList;
导入org.xmlpull.v1.XmlPullParser;
导入org.xmlpull.v1.XmlPullParserException;
导入org.xmlpull.v1.XmlPullParserFactory;
导入android.os.Bundle;
导入android.app.Activity;
导入android.util.Log;
导入android.view.Menu;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
列表视图列表;
字符串str;
ArrayList arrdata;
ArrayList arrayofString,parcedCountry;
String textforinput=“你好,世界!”;
字符串parsedData=“”;
XmlPullParser;
ArrayAdapter;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=(ListView)findViewById(R.id.li);
适配器=新阵列适配器(MainActivity.this,
android.R.layout.simple_list_item_1,android.R.id.text1,arrayofString);
list.setAdapter(适配器);
尝试
{
输入流为;
is=getAssets().open(“countries.xml”);
BufferedReader r=新的BufferedReader(新的InputStreamReader(is));
StringBuilder总计=新StringBuilder();
弦线;
而((line=r.readLine())!=null)
{
合计.追加(行);
}
//Log.e(“文件“,”+total.toString());
parseCountries(total.toString());
}
捕获(例外e)
{
//TODO:处理异常
}
}
私有void解析国家(字符串)
{
int-eventType=0;
字符串国家=空;
布尔countryFlag=false;
ArrayListparsedCountry=新的ArrayList();
尝试
{
xmlPullParser=XmlPullParserFactory.newInstance().newPullParser();
setInput(新的StringReader(string));
eventType=xmlPullParser.getEventType();
}
catch(XMLPullParseRexE){
e、 printStackTrace();
}
while(eventType!=XmlPullParser.END_文档)
{
开关(事件类型)
{
案例XmlPullParser.START_文档:
打破
case XmlPullParser.START_标记:
if(xmlPullParser.getName().equalsIgnoreCase(“国家”))
{
countryFlag=true;
}
打破
case XmlPullParser.TEXT:
国际单项体育联合会(国旗)
{
countries=xmlPullParser.getText().toString().trim();
Log.i(“解析示例”、“国家”+国家);
}
打破
case XmlPullParser.END_标记:
if(xmlPullParser.getName().equalsIgnoreCase(“国家”))
{
parsedCountry.add(国家);
countryFlag=false;
}
打破
//开关末端
}
试一试{
eventType=xmlPullParser.next();
}catch(XMLPullParseRexE){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
//arrayofString=新的ArrayList();
//对于(int i=0;i请在onCreate()中执行此操作
在创建适配器之前初始化
arrayofString = new ArrayList<String>();
parcedCountry = new ArrayList<String>();
arrayofString=newarraylist();
parcedCountry=新的ArrayList();
更新以显示列表
adapter=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,android.R.id.text1,parcedCountry); //UPDATE HERE
list.setAdapter(adapter);
try
{
InputStream is;
is=getAssets().open("countries.xml");
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null)
{
total.append(line);
}
//Log.e("File",""+total.toString());
parseCountries(total.toString());
adapter.notifyDataSetChanged(); //UPDATE HERE
}
catch (Exception e)
{
// TODO: handle exception
}
adapter=new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,android.R.id.text1,parcedCountry);//在此处更新
list.setAdapter(适配器);
尝试
{
输入流为;
is=getAssets().open(“countries.xml”);
BufferedReader r=新的BufferedReader(新的InputStreamReader(is));
StringBuilder总计=新StringBuilder();
弦线;
而((line=r.readLine())!=null)
{
合计.追加(行);
}
//Log.e(“文件“,”+total.toString());
parseCountries(total.toString());
adapter.notifyDataSetChanged();//在此处更新
}
捕获(例外e)
{
//TODO:处理异常
}
请在onCreate()中执行此操作
在创建适配器之前初始化
arrayofString = new ArrayList<String>();
parcedCountry = new ArrayList<String>();
arrayofString=newarraylist();
parcedCountry=新的ArrayList();
更新以显示列表
adapter=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,android.R.id.text1,parcedCountry); //UPDATE HERE
list.setAdapter(adapter);
try
{
InputStream is;
is=getAssets().open("countries.xml");
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null)
{
total.append(line);
}
//Log.e("File",""+total.toString());
parseCountries(total.toString());
adapter.notifyDataSetChanged(); //UPDATE HERE
}
catch (Exception e)
{
// TODO: handle exception
}
adapter=new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,android.R.id.text1,parcedCountry);//在此处更新
list.setAdapter(适配器);
尝试
{
输入流为;
is=getAssets().open(“countries.xml”);
缓冲器