Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序无法启动活动组件信息_Java_Android_Listview_Exception_Xmlpullparser - Fatal编程技术网

Java Android应用程序无法启动活动组件信息

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

我是一名新的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.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”);
缓冲器