Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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 将JSON解析为文本视图_Java_Android_Json_Parsing_Textview - Fatal编程技术网

Java 将JSON解析为文本视图

Java 将JSON解析为文本视图,java,android,json,parsing,textview,Java,Android,Json,Parsing,Textview,因此,我要解析来自启用API的网站的JSON数据,这需要通过APIKEY进行身份验证,我的问题是,我试图解析数据,然后将其插入UI上的TextView中。我当前的代码以前使用的是HashMap和ListView,但现在我试图将其更改为只将数据填充到textview。目前,我已经开始重新修改代码,现在我的当前代码出现了RunTimeExceptions。任何帮助都将不胜感激 问题解决 公共类ParseMoreDetails扩展活动{ 私人语境; 专用静态字符串url=”https://api.co

因此,我要解析来自启用API的网站的JSON数据,这需要通过APIKEY进行身份验证,我的问题是,我试图解析数据,然后将其插入UI上的TextView中。我当前的代码以前使用的是
HashMap
ListView
,但现在我试图将其更改为只将数据填充到
textview
。目前,我已经开始重新修改代码,现在我的当前代码出现了
RunTimeExceptions
。任何帮助都将不胜感激

问题解决
公共类ParseMoreDetails扩展活动{
私人语境;
专用静态字符串url=”https://api.company.com/api/systems?";
私有静态最终字符串TAG_SYSTEM=“systems”;
私有静态最终字符串TAG\u SYSTEM\u ID=“SYSTEM\u ID”;
私有静态最终字符串TAG_CITY=“CITY”;
私有静态最终字符串标记_STATE=“STATE”;
私有静态最终字符串TAG\u SYSTEM\u NAME=“SYSTEM\u NAME”;
私有静态最终字符串TAG\u SYSTEM\u PUBLIC\u NAME=“SYSTEM\u PUBLIC\u NAME”;
私有静态最终字符串标记_STATUS=“STATUS”;
文本视图文本视图;
文本视图文本视图2;
文本视图文本视图3;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(textView)findViewById(R.id.textView2);
textView2=(TextView)findViewById(R.id.TextView01);
textView3=(TextView)findViewById(R.id.TextView03);
新建ProgressTask(ParseMoreDetails.this).execute();
}
私有类ProgressTask扩展了AsyncTask{
私人对话;
ArrayList ArrForTextView;
私人活动;
//私人列表消息;
公共进程任务(ParseMoreDetails ParseMoreDetails){
this.activity=parseMoreDetails;
上下文=解析更多细节;
dialog=新建进度对话框(上下文);
}
/**“进度”对话框,向用户显示备份正在处理*/
/**应用程序上下文*/
私人语境;
受保护的void onPreExecute(){
this.dialog.setMessage(“进度开始”);
this.dialog.show();
}
@凌驾
受保护的void onPostExecute(ArrayList成功){
如果(arrfortextview.size()>0){
setText(success.get(0));
textView2.setText(success.get(1));
textView3.setText(success.get(2));
}
if(dialog.isShowing()){
dialog.dismise();
}
}
受保护的ArrayList doInBackground(最终字符串…args){
JSONParser jParser=新的JSONParser();
arrfortextview=newarraylist();
//使用strings.xml中的APIKEY
String apikey=getString(R.String.apikey);
//从URL获取JSON字符串
JSONArray json=jParser.getJSONFromUrl(url+“&key=“+apikey”);
for(int i=0;i
布局

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="System ID: " />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="..." />
    </LinearLayout>
</FrameLayout>

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.00" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="City:" />

        <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="..." />
    </LinearLayout>
</FrameLayout>

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.00" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/TextView04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="State:" />

        <TextView
            android:id="@+id/TextView03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="..." />
    </LinearLayout>
</FrameLayout>

</LinearLayout>

当前错误
  • RuntimeException-NullPointerException
  • 泄漏的Window com.android.internal.policy.impl.PhoneWindow$DecorView
日志猫-更新
05-01 10:27:47.040:E/AndroidRuntime(28236):致命异常:AsyncTask#1
05-01 10:27:47.040:E/AndroidRuntime(28236):java.lang.RuntimeException:执行doInBackground()时出错
05-01 10:27:47.040:E/AndroidRuntime(28236):在android.os.AsyncTask$3.done(AsyncTask.java:299)
05-01 10:27:47.040:E/AndroidRuntime(28236):位于java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-01 10:27:47.040:E/AndroidRuntime(28236):位于java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-01 10:27:47.040:E/AndroidRuntime(28236):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-01 10:27:47.040:E/AndroidRuntime(28236):在java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-01 10:27:47.040:E/AndroidRuntime(28236):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-01 10:27:47.040:E/AndroidRuntime(28236):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-01 10:27:47.040:E/AndroidRuntime(28236):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-01 10:27:47.040:E/AndroidRuntime(28236):在java.lang.Thread.run(Thread.java:856)处
05-01 10:27:47.040:E/AndroidRuntime(28236):由以下原因引起:java.lang.NullPointerException
05-01 10:27:47.040:E/AndroidRuntime(28236):位于com.jitesh.androidjsonparser.ParseMoreDetails$ProgressTask.doInBackground(ParseMoreDetails.java:116)
05-01 10:27:47.040:E/AndroidRuntime(28236):位于com.jitesh.androidjsonparser.ParseMoreDetails$ProgressTask.doInBackground(ParseMoreDetails.java:1)
05-01 10:27:47.040:E/AndroidRuntime(28236):在android.os.AsyncTask$2.call(AsyncTask.java:287)
05-01 10:27:47.040:E/AndroidRuntime(28236):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-01 10:27:47.040:E/AndroidRuntime(28236):…还有5个
05-01 10:27:55.035:I/Choreographer(28236):跳过了464帧!应用程序可能在其主线程上做了太多工作。
05-01 10:27:55.210:E/WindowManager(28236):Activity com.jitesh.androidjsonparser.ParseMoreDetails泄露了window com.android.internal.policy.impl.PhoneWindow$DecorView@
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="System ID: " />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="..." />
    </LinearLayout>
</FrameLayout>

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.00" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="City:" />

        <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="..." />
    </LinearLayout>
</FrameLayout>

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.00" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/TextView04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="State:" />

        <TextView
            android:id="@+id/TextView03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="..." />
    </LinearLayout>
</FrameLayout>

</LinearLayout>
 05-01 10:27:47.040: E/AndroidRuntime(28236): FATAL EXCEPTION: AsyncTask #1
 05-01 10:27:47.040: E/AndroidRuntime(28236): java.lang.RuntimeException: An error occured while executing doInBackground()
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at android.os.AsyncTask$3.done(AsyncTask.java:299)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.lang.Thread.run(Thread.java:856)
 05-01 10:27:47.040: E/AndroidRuntime(28236): Caused by: java.lang.NullPointerException
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at com.jitesh.androidjsonparser.ParseMoreDetails$ProgressTask.doInBackground(ParseMoreDetails.java:116)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at com.jitesh.androidjsonparser.ParseMoreDetails$ProgressTask.doInBackground(ParseMoreDetails.java:1)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
 05-01 10:27:47.040: E/AndroidRuntime(28236):   ... 5 more
 05-01 10:27:55.035: I/Choreographer(28236): Skipped 464 frames!  The application may be doing too much work on its main thread.
 05-01 10:27:55.210: E/WindowManager(28236): Activity com.jitesh.androidjsonparser.ParseMoreDetails has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4285c818 that was originally added here
 05-01 10:27:55.210: E/WindowManager(28236): android.view.WindowLeaked: Activity com.jitesh.androidjsonparser.ParseMoreDetails has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4285c818 that was originally added here
 05-01 10:27:55.210: E/WindowManager(28236):    at android.view.ViewRootImpl.<init>(ViewRootImpl.java:402)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:311)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.view.Window$LocalWindowManager.addView(Window.java:554)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.Dialog.show(Dialog.java:277)
 05-01 10:27:55.210: E/WindowManager(28236):    at com.jitesh.androidjsonparser.ParseMoreDetails$ProgressTask.onPreExecute(ParseMoreDetails.java:86)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.os.AsyncTask.execute(AsyncTask.java:534)
 05-01 10:27:55.210: E/WindowManager(28236):    at com.jitesh.androidjsonparser.ParseMoreDetails.onCreate(ParseMoreDetails.java:63)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.Activity.performCreate(Activity.java:5206)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.os.Handler.dispatchMessage(Handler.java:99)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.os.Looper.loop(Looper.java:137)
 05-01 10:27:55.210: E/WindowManager(28236):    at android.app.ActivityThread.main(ActivityThread.java:4898)
 05-01 10:27:55.210: E/WindowManager(28236):    at java.lang.reflect.Method.invokeNative(Native Method)
 05-01 10:27:55.210: E/WindowManager(28236):    at java.lang.reflect.Method.invoke(Method.java:511)
 05-01 10:27:55.210: E/WindowManager(28236):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
 05-01 10:27:55.210: E/WindowManager(28236):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
 05-01 10:27:55.210: E/WindowManager(28236):    at dalvik.system.NativeStart.main(Native Method)
TextView textView = (TextView) findViewById(R.id.textView2);  //<<< here
TextView textView2 = (TextView) findViewById(R.id.TextView01);//<<< here
TextView textView3 = (TextView) findViewById(R.id.TextView03);//<<< here

@Override
protected void onCreate(Bundle savedInstanceState) {
.....
TextView textView,textView2,textView3;  //<<<declare here

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

  //initialize all textViews here
  textView = (TextView) findViewById(R.id.textView2);
  textView2 = (TextView) findViewById(R.id.TextView01);
  textView3 = (TextView) findViewById(R.id.TextView03);
  ......
// getting JSON string from URL
        JSONArray json = jParser.getJSONFromUrl(url + "&key=" + apikey);
  // getting JSON string from URL
            JSONArray json = jParser.getJSONFromUrl(url + "key=" + apikey);