Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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 NullPointerException:URI字符串_Java_Android_Json_Android Activity - Fatal编程技术网

Java NullPointerException:URI字符串

Java NullPointerException:URI字符串,java,android,json,android-activity,Java,Android,Json,Android Activity,我在尝试加载我的活动单个项目活动时收到意外错误。简言之,假设此活动将JSON数据填充到应用程序中 以下是收到的logcat消息: 08-06 21:49:11.711: E/AndroidRuntime(3006): FATAL EXCEPTION: main 08-06 21:49:11.711: E/AndroidRuntime(3006): Process: com.dooba.beta, PID: 3006 08-06 21:49:11.711: E/AndroidRuntime(300

我在尝试加载我的活动单个项目活动时收到意外错误。简言之,假设此活动将JSON数据填充到应用程序中

以下是收到的logcat消息:

08-06 21:49:11.711: E/AndroidRuntime(3006): FATAL EXCEPTION: main
08-06 21:49:11.711: E/AndroidRuntime(3006): Process: com.dooba.beta, PID: 3006
08-06 21:49:11.711: E/AndroidRuntime(3006): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dooba.beta/com.dooba.beta.EventSingleItemActivity}: java.lang.NullPointerException: uriString
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.os.Handler.dispatchMessage(Handler.java:102)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.os.Looper.loop(Looper.java:136)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.ActivityThread.main(ActivityThread.java:5017)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at java.lang.reflect.Method.invokeNative(Native Method)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at java.lang.reflect.Method.invoke(Method.java:515)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at dalvik.system.NativeStart.main(Native Method)
08-06 21:49:11.711: E/AndroidRuntime(3006): Caused by: java.lang.NullPointerException: uriString
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.net.Uri$StringUri.<init>(Uri.java:467)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.net.Uri$StringUri.<init>(Uri.java:457)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.net.Uri.parse(Uri.java:429)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at com.dooba.beta.EventSingleItemActivity.onCreate(EventSingleItemActivity.java:26)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.Activity.performCreate(Activity.java:5231)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-06 21:49:11.711: E/AndroidRuntime(3006):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
08-06 21:49:11.711: E/AndroidRuntime(3006):     ... 11 more
以下是主要活动页面

public class EventsActivity extends Activity{

    private static final String URL_WEB_SERVICE = "http://dooba.ca/analytics/ed.php";
    private GridView gv;
    private ArrayList<Events_List> container;
    private ArrayList<Events_List> items;
    public Uri list_item_bac;
    public Uri single_list_item_bac;
    public String list_item_name;
    public String list_item_description;
    public String single_list_item_description;
    public String list_item_price;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.events_list_layout);
        gv = (GridView) findViewById(R.id.gridview);
        container = new ArrayList<Events_List>();
        //download JSON
        listDownload();


        GridView s = (GridView) findViewById(R.id.gridview);
        s.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(EventsActivity.this,EventSingleItemActivity.class);
                intent.putExtra("single_list_item_bac",container.get(position).getSingle_list_item_bac());
                intent.putExtra("list_item_name", container.get(position).getList_item_title());
                intent.putExtra("single_list_item_description", container.get(position).getSingle_list_item_description());
                intent.putExtra("list_item_price",container.get(position).getList_item_price());

                startActivity(intent); //start Activity
            }
        });
    }
    public void listDownload(){
        RequestQueue volley = Volley.newRequestQueue(this);
        JsonObjectRequest json = new JsonObjectRequest(Method.GET, URL_WEB_SERVICE, null, ResponseListener(), ErrorListener());
        volley.add(json);
    }

    private Response.Listener<JSONObject> ResponseListener() {
        return new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    //your JSON Array
                    JSONArray array = response.getJSONArray("list_item");
                    for(int i = 0; i < array.length(); i++){
                        container.add(convertirAnuncio(array.getJSONObject(i)));
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                gv.setAdapter(new AdapterEvents(getApplicationContext(),container));
                }
            };
        };


    private Response.ErrorListener ErrorListener() {
        return new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) { }
        };
    }

    //object JSON
    private final Events_List convertirAnuncio(JSONObject obj) throws JSONException {
        long id = obj.getLong("id"); //id 
        String list_item_name = obj.getString("list_item_name"); 
        String list_item_description = obj.getString("list_item_description");
        String list_item_price = obj.getString("list_item_price");
        String single_list_item_description = obj.getString("single_list_item_description");
        Uri uri = Uri.parse(obj.getString("list_item_bac"));
        return new Events_List(id,single_list_item_description,single_list_item_bac, list_item_name,list_item_description,list_item_price, uri);
    }
}

任何帮助都将不胜感激

执行如下空检查以避免异常:

 Uri urisingle = Uri.parse(i.getStringExtra("single_list_item_bac"));

if(urisingle!=null){
   doSomething()....
 }

当您有意发送数据时,应首先检查:

if(Uri != null)
  // you can sent image as string
  in.putExtra("image", imageUri);

谢谢你的及时回复。你能澄清一下吗?有很多地方你的代码可能会失败..首先检查下载json数据是否正确..如果不正确,首先调试它..我相信你没有得到正确的数据..请放入日志和分析EAH,问题是你正在向Uri.parse方法传递一个空字符串。只需检查:str=i.getStringExtra(“单项目列表”);如果(str!=null)uriSingle=Uri.parse(str);谢谢你的及时回复。我同意,并得出结论,错误来自以下行:uriurisingle=Uri.parse(I.getStringExtra(“single_list_item_bac”);json数据是正确的,我也意识到urisingle变量没有被使用。您在上面的答案中检查了它是null还是not??
 Uri urisingle = Uri.parse(i.getStringExtra("single_list_item_bac"));

if(urisingle!=null){
   doSomething()....
 }
if(Uri != null)
  // you can sent image as string
  in.putExtra("image", imageUri);