2012-04-04 18 views
0

アンドロイドアプリからjspページのjsonデータ "name"にアクセスしようとしています。エラーが発生し、アプリケーションが強制終了します。次のようにアプリケーションの強制終了

私のJSPコードは次のように...

<%@page contentType="text/html; charset=UTF-8"%> 
<%@page import="org.json.simple.JSONObject"%> 
<% 
JSONObject obj=new JSONObject(); 
obj.put("name","foo"); 
obj.put("num",new Integer(100)); 
obj.put("balance",new Double(1000.21)); 
obj.put("is_vip",new Boolean(true)); 
obj.put("nickname",null); 
out.print(obj); 
out.flush(); 
%> 

私のアンドロイドのJavaコードがある...日食に

package com.campuspro.start; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class JsonDemo extends Activity 
{ 
TextView tv=(TextView)findViewById(R.id.jsonresult); 
HttpClient client=new DefaultHttpClient(); 
String url="http://10.0.2.2:7001/f/json.jsp"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    // TODO Auto-generated method stub 
    try{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.result_json); 
    HttpGet get=new HttpGet(url); 
    HttpResponse r=client.execute(get); 
    int status=r.getStatusLine().getStatusCode(); 
    if(status==200) 
    { 
     HttpEntity e=r.getEntity(); 
     String data=EntityUtils.toString(e); 
     JSONArray arr=new JSONArray(data); 
     JSONObject last=arr.getJSONObject(0); 
     String result=last.getString("name"); 
     tv.setText(result); 
    } 

}catch(Exception e) 
{ 

} 
} 

} 

私のログの猫のエラーが...

です
04-04 09:30:53.910: D/AndroidRuntime(345): Shutting down VM 
04-04 09:30:53.910: W/dalvikvm(345): threadid=1: thread exiting with uncaught exception   (group=0x4001d800) 
04-04 09:30:54.190: E/AndroidRuntime(345): FATAL EXCEPTION: main 
04-04 09:30:54.190: E/AndroidRuntime(345): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.campuspro.start/com.campuspro.start.JsonDemo}: java.lang.NullPointerException 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.os.Looper.loop(Looper.java:123) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-04 09:30:54.190: E/AndroidRuntime(345): at java.lang.reflect.Method.invokeNative(Native Method) 
04-04 09:30:54.190: E/AndroidRuntime(345): at java.lang.reflect.Method.invoke(Method.java:521) 
04-04 09:30:54.190: E/AndroidRuntime(345): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-04 09:30:54.190: E/AndroidRuntime(345): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-04 09:30:54.190: E/AndroidRuntime(345): at dalvik.system.NativeStart.main(Native Method) 
04-04 09:30:54.190: E/AndroidRuntime(345): Caused by: java.lang.NullPointerException 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.Activity.findViewById(Activity.java:1637) 
04-04 09:30:54.190: E/AndroidRuntime(345): at com.campuspro.start.JsonDemo.<init>(JsonDemo.java:18) 
04-04 09:30:54.190: E/AndroidRuntime(345): at java.lang.Class.newInstanceImpl(Native Method) 
04-04 09:30:54.190: E/AndroidRuntime(345): at java.lang.Class.newInstance(Class.java:1429) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
04-04 09:30:54.190: E/AndroidRuntime(345): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
04-04 09:30:54.190: E/AndroidRuntime(345): ... 11 more 

答えて

2

あなたはエラーがあります。

TextView tv=(TextView)findViewById(R.id.jsonresult); 

あなたはそれに近い他の人と一緒に、この宣言を移動するsetContentView(R.layout.result_json);

+0

絶好の場所後にそれを設定する必要があり、setContentView(...) ''後onCreate' 'になります。 – Phil

+0

おかげさまで@Roman Truba ..しかし、私はアンドロイドアプリで "foo"として "名前"の私の価値を見ることができません。なぜそれは? – sagar

+0

@sagarあなたのデータとjsonarrayをデバッグしようとします –

関連する問題