Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Android 将错误获取为java.lang.NullPointerException_Android_Json_Web Services - Fatal编程技术网

Android 将错误获取为java.lang.NullPointerException

Android 将错误获取为java.lang.NullPointerException,android,json,web-services,Android,Json,Web Services,我是Android(java)的新手,我正在开发一个简单的应用程序,它将调用webservice(Json webservice)并将数据绑定到Android:listview。 我创建了JSON Web服务,并测试了它是否工作正常。在android中,当我给出JSON WS URL并执行该程序时,意味着它将错误显示为 java.lang.NullPointerException at com.example.cargo.MainActivity$JSONParse.onPostExecute(

我是Android(java)的新手,我正在开发一个简单的应用程序,它将调用webservice(Json webservice)并将数据绑定到Android:listview。 我创建了JSON Web服务,并测试了它是否工作正常。在android中,当我给出JSON WS URL并执行该程序时,意味着它将错误显示为

java.lang.NullPointerException at com.example.cargo.MainActivity$JSONParse.onPostExecute(MainActivity.java:113)
在第113行中

Cargo = json.getJSONArray(TAG_Track);
不知道出了什么问题。在过去的4天里,我一直被这个问题困扰着。 这是我的主要活动代码:

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
//import learn2crack.listview.library.JSONParser;

        public class MainActivity extends Activity {
            ListView listView1;
            TextView textView1;
            //TextView name;
            //TextView api;
            Button button1;
            ArrayList<HashMap<String, String>> Track= new ArrayList<HashMap<String, String>>();

            //URL to get JSON Array
            private static String url = "http://192.168.1.126/testing/CService.asmx";

            //JSON Node Names 
            private static final String TAG_Track = "Track";
            private static final String TAG_Status = "Status";

            JSONArray Cargo = null;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);
                Track = new ArrayList<HashMap<String, String>>();
                button1 = (Button)findViewById(R.id.button1);
                button1.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                         new JSONParse().execute();
                    }
                });
            }

            private class JSONParse extends AsyncTask<String, String, JSONObject> {
                 private ProgressDialog pDialog;
                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                  textView1 = (TextView)findViewById(R.id.textView1);
                    pDialog = new ProgressDialog(MainActivity.this);
                    pDialog.setMessage("Getting Data ...");
                    pDialog.setIndeterminate(false);
                    pDialog.setCancelable(true);
                    pDialog.show();
                }
                @Override
                protected JSONObject doInBackground(String... args) {

                    JSONParser jParser = new JSONParser();

                    // Getting JSON from URL
                    JSONObject json = jParser.getJSONFromUrl(url);
                    return json;
                }
                 @Override
                 protected void onPostExecute(JSONObject json) {
                     pDialog.dismiss();
                     try {
                            // Getting JSON Array from URL

                            Cargo = json.getJSONArray(TAG_Track);
                            for(int i = 0; i < Cargo.length(); i++){
                            JSONObject c = Cargo.getJSONObject(i);

                            // Storing  JSON item in a Variable
                            String Status = c.getString(TAG_Status);
                            //String name = c.getString(TAG_NAME);

                        // Adding value HashMap key => value

                            HashMap<String, String> map = new HashMap<String, String>();
                            map.put(TAG_Status, Status);
                            Track.add(map);
                            listView1=(ListView)findViewById(R.id.listView1);
                            ListAdapter adapter = new SimpleAdapter(MainActivity.this, Track,
                                    R.layout.listview,
                                    new String[] { TAG_Status }, new int[] {
                                            R.id.textView1});

                            listView1.setAdapter(adapter);
                            listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                    Toast.makeText(MainActivity.this, "You Clicked at "+Track.get(+position).get("Status"), Toast.LENGTH_SHORT).show();
                                }
                            });
                            }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                 }
            }
        }
这是我的日志:

04-05 12:55:38.132: E/JSON Parser(768): Error parsing data org.json.JSONException: Value <?xml of type java.lang.String cannot be converted to JSONObject
04-05 12:55:38.172: E/AndroidRuntime(768): FATAL EXCEPTION: main
04-05 12:55:38.172: E/AndroidRuntime(768): java.lang.NullPointerException
04-05 12:55:38.172: E/AndroidRuntime(768):  at com.example.cargo.MainActivity$JSONParse.onPostExecute(MainActivity.java:113)
04-05 12:55:38.172: E/AndroidRuntime(768):  at com.example.cargo.MainActivity$JSONParse.onPostExecute(MainActivity.java:1)
04-05 12:55:38.172: E/AndroidRuntime(768):  at android.os.AsyncTask.finish(AsyncTask.java:590)
04-05 12:55:38.172: E/AndroidRuntime(768):  at android.os.AsyncTask.access$600(AsyncTask.java:149)
04-05 12:55:38.172: E/AndroidRuntime(768):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:603)
04-05 12:55:38.172: E/AndroidRuntime(768):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 12:55:38.172: E/AndroidRuntime(768):  at android.os.Looper.loop(Looper.java:132)
04-05 12:55:38.172: E/AndroidRuntime(768):  at android.app.ActivityThread.main(ActivityThread.java:4123)
04-05 12:55:38.172: E/AndroidRuntime(768):  at java.lang.reflect.Method.invokeNative(Native Method)
04-05 12:55:38.172: E/AndroidRuntime(768):  at java.lang.reflect.Method.invoke(Method.java:491)
04-05 12:55:38.172: E/AndroidRuntime(768):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-05 12:55:38.172: E/AndroidRuntime(768):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-05 12:55:38.172: E/AndroidRuntime(768):  at dalvik.system.NativeStart.main(Native Method)

04-05 12:55:38.132:E/JSON解析器(768):解析数据org.JSON.JSONException:Value时出错您正在postExecute中执行主操作。PostExecute用于显示UI。在doInBackground中使用它,并在postExecute中显示结果UI

所有执行的都是jsonparsing,显示在doInBackground中

    void doInBackground()
                    {
                     try {
                            // Getting JSON Array from URL
                            //heavy operation like parsing do here..

                            Cargo = json.getJSONArray(TAG_Track);
                            for(int i = 0; i < Cargo.length(); i++){
                            JSONObject c = Cargo.getJSONObject(i);

                            // Storing  JSON item in a Variable
                            String Status = c.getString(TAG_Status);
                            //String name = c.getString(TAG_NAME);

                        // Adding value HashMap key => value

                            HashMap<String, String> map = new HashMap<String, String>();
                            map.put(TAG_Status, Status);
                            Track.add(map);

}
                           void onPostExecute(JSONObject json) {
                            {
                            //just to display UI. use it in postExecute.
                             listView1=(ListView)findViewById(R.id.listView1);
                            ListAdapter adapter = new SimpleAdapter(MainActivity.this, Track,
                                    R.layout.listview,
                                    new String[] { TAG_Status }, new int[] {
                                            R.id.textView1});

                            listView1.setAdapter(adapter);
                            listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                    Toast.makeText(MainActivity.this, "You Clicked at "+Track.get(+position).get("Status"), Toast.LENGTH_SHORT).show();
                                }
                            });
                            }
                            }
void doInBackground()
{
试一试{
//从URL获取JSON数组
//像解析这样的繁重操作在这里执行。。
Cargo=json.getJSONArray(TAG_Track);
对于(int i=0;ivalue
HashMap=newHashMap();
地图放置(标签状态、状态);
轨迹。添加(地图);
}
void onPostExecute(JSONObject json){
{
//只是为了显示UI。在postExecute中使用它。
listView1=(ListView)findViewById(R.id.listView1);
ListAdapter=new SimpleAdapter(MainActivity.this,Track,
R.layout.listview,
新字符串[]{TAG_Status},新int[]{
R.id.textView1});
listView1.setAdapter(适配器);
listView1.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Toast.makeText(MainActivity.this),您在“+Track.get(+position.get”(“Status”)、Toast.LENGTH_SHORT.show()处单击过它;
}
});
}
}
试试这个

public class MainActivity extends Activity {
            ListView listView1;
            TextView textView1;
            //TextView name;
            //TextView api;
            Button button1;
            ArrayList<HashMap<String, String>> Track= new ArrayList<HashMap<String, String>>();

            //URL to get JSON Array
            private static String url = "http://192.168.1.126/testing/CService.asmx";

            //JSON Node Names 
            private static final String TAG_Track = "Track";
            private static final String TAG_Status = "Status";

            JSONArray Cargo = null;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);
                Track = new ArrayList<HashMap<String, String>>();
                button1 = (Button)findViewById(R.id.button1);
                listView1=(ListView)findViewById(R.id.listView1);
                button1.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                         new JSONParse().execute();
                    }
                });

                listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                    Toast.makeText(MainActivity.this, "You Clicked at "+Track.get(+position).get("Status"), Toast.LENGTH_SHORT).show();
                                }
                            });
            }

            private class JSONParse extends AsyncTask<String, String, JSONObject> {
                 private ProgressDialog pDialog;
                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                  textView1 = (TextView)findViewById(R.id.textView1);
                    pDialog = new ProgressDialog(MainActivity.this);
                    pDialog.setMessage("Getting Data ...");
                    pDialog.setIndeterminate(false);
                    pDialog.setCancelable(true);
                    pDialog.show();
                }
                @Override
                protected JSONObject doInBackground(String... args) {

                    JSONParser jParser = new JSONParser();

                    // Getting JSON from URL
                    JSONObject json = jParser.getJSONFromUrl(url);
                     Cargo = json.getJSONArray(TAG_Track);
                            for(int i = 0; i < Cargo.length(); i++){
                            JSONObject c = Cargo.getJSONObject(i);
                            }

                            // Storing  JSON item in a Variable
                            String Status = c.getString(TAG_Status);
                            //String name = c.getString(TAG_NAME);

                        // Adding value HashMap key => value

                            HashMap<String, String> map = new HashMap<String, String>();
                            map.put(TAG_Status, Status);
                            Track.add(map);

                    return json;
                }
                 @Override
                 protected void onPostExecute(JSONObject json) {
                     pDialog.dismiss();
                     try {
                            // Getting JSON Array from URL


                            ListAdapter adapter = new SimpleAdapter(MainActivity.this, Track,
                                    R.layout.listview,
                                    new String[] { TAG_Status }, new int[] {
                                            R.id.textView1});

                            listView1.setAdapter(adapter);
                            }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                 }
            }
        }
公共类MainActivity扩展活动{
列表视图列表视图1;
文本视图文本视图1;
//文本视图名称;
//TextView api;
按钮1;
ArrayList轨迹=新的ArrayList();
//获取JSON数组的URL
专用静态字符串url=”http://192.168.1.126/testing/CService.asmx";
//JSON节点名称
私有静态最终字符串标记_Track=“Track”;
私有静态最终字符串标记_Status=“Status”;
JSONArray Cargo=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Track=newarraylist();
button1=(按钮)findViewById(R.id.button1);
listView1=(ListView)findViewById(R.id.listView1);
button1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
新建JSONParse().execute();
}
});
listView1.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Toast.makeText(MainActivity.this),您在“+Track.get(+position.get”(“Status”)、Toast.LENGTH_SHORT.show()处单击过它;
}
});
}
私有类JSONParse扩展了异步任务{
私人对话;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
textView1=(TextView)findViewById(R.id.textView1);
pDialog=新建进度对话框(MainActivity.this);
setMessage(“获取数据…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
@凌驾
受保护的JSONObject doInBackground(字符串…args){
JSONParser jParser=新的JSONParser();
//从URL获取JSON
JSONObject json=jParser.getJSONFromUrl(url);
Cargo=json.getJSONArray(TAG_Track);
对于(int i=0;ivalue
HashMap=newHashMap();
public class MainActivity extends Activity {
            ListView listView1;
            TextView textView1;
            //TextView name;
            //TextView api;
            Button button1;
            ArrayList<HashMap<String, String>> Track= new ArrayList<HashMap<String, String>>();

            //URL to get JSON Array
            private static String url = "http://192.168.1.126/testing/CService.asmx";

            //JSON Node Names 
            private static final String TAG_Track = "Track";
            private static final String TAG_Status = "Status";

            JSONArray Cargo = null;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);
                Track = new ArrayList<HashMap<String, String>>();
                button1 = (Button)findViewById(R.id.button1);
                listView1=(ListView)findViewById(R.id.listView1);
                button1.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                         new JSONParse().execute();
                    }
                });

                listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                    Toast.makeText(MainActivity.this, "You Clicked at "+Track.get(+position).get("Status"), Toast.LENGTH_SHORT).show();
                                }
                            });
            }

            private class JSONParse extends AsyncTask<String, String, JSONObject> {
                 private ProgressDialog pDialog;
                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                  textView1 = (TextView)findViewById(R.id.textView1);
                    pDialog = new ProgressDialog(MainActivity.this);
                    pDialog.setMessage("Getting Data ...");
                    pDialog.setIndeterminate(false);
                    pDialog.setCancelable(true);
                    pDialog.show();
                }
                @Override
                protected JSONObject doInBackground(String... args) {

                    JSONParser jParser = new JSONParser();

                    // Getting JSON from URL
                    JSONObject json = jParser.getJSONFromUrl(url);
                     Cargo = json.getJSONArray(TAG_Track);
                            for(int i = 0; i < Cargo.length(); i++){
                            JSONObject c = Cargo.getJSONObject(i);
                            }

                            // Storing  JSON item in a Variable
                            String Status = c.getString(TAG_Status);
                            //String name = c.getString(TAG_NAME);

                        // Adding value HashMap key => value

                            HashMap<String, String> map = new HashMap<String, String>();
                            map.put(TAG_Status, Status);
                            Track.add(map);

                    return json;
                }
                 @Override
                 protected void onPostExecute(JSONObject json) {
                     pDialog.dismiss();
                     try {
                            // Getting JSON Array from URL


                            ListAdapter adapter = new SimpleAdapter(MainActivity.this, Track,
                                    R.layout.listview,
                                    new String[] { TAG_Status }, new int[] {
                                            R.id.textView1});

                            listView1.setAdapter(adapter);
                            }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                 }
            }
        }