Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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 我想使用给定的url通过JSONParser在textview上显示值_Java_Android_Xml - Fatal编程技术网

Java 我想使用给定的url通过JSONParser在textview上显示值

Java 我想使用给定的url通过JSONParser在textview上显示值,java,android,xml,Java,Android,Xml,我想显示关于给定JSON url的构建器,但我无法在MainActivity上正确声明JSONObject和JSONArray,因此请任何人帮助我在TextView上显示数据。 错误显示: java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.和_ws_builder/com.example.和_ws_builder.MainActivity}: android.os.NetworkOnMainThreadException Ma

我想显示关于给定JSON url的构建器,但我无法在MainActivity上正确声明JSONObject和JSONArray,因此请任何人帮助我在TextView上显示数据。 错误显示:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.和_ws_builder/com.example.和_ws_builder.MainActivity}: android.os.NetworkOnMainThreadException

MainActivity.java类

 public class MainActivity extends Activity {   
        private static String url ="http://myfourwalls.in/services_microsite/project_builder.php";
        private static final String TAG_Name = "about_builder";
        JSONArray builder = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            JSONParser jParser = new JSONParser();        
            JSONObject json = jParser.getJSONFormUrl(url);        
            try {

                builder = json.getJSONArray(TAG_Name);
                 JSONObject c = builder.getJSONObject(0);

                for (int i = 0; i < json.length(); i++) {

                    String name = c.getString(TAG_Name);                
                    final TextView nam = (TextView) findViewById(R.id.txtname);
                    nam.setText(name);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
main_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >    
     <TextView 
         android:id="@+id/txtname"
         android:layout_width="fill_parent"
         android:layout_height="100dp"/>
</RelativeLayout>

您正在主线程中使用与网络相关的代码。使用。

您在主线程内调用网络调用意味着android不支持前台。因此,请使用assynctask类,它将在后台处理网络调用

1在创建方法调用时插入,如:

new GetJson().execute();
2在oncreate外部声明以下内容

     private class GetJson extends AsyncTask<String, Void, String> {

        JSONObject c=null;
     @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }

        @Override
        protected JSONObject doInBackground(String... params) {

    JSONParser jParser = new JSONParser();        
            JSONObject json = jParser.getJSONFormUrl(url);        
            try {

                builder = json.getJSONArray(TAG_Name);
                 c = builder.getJSONObject(0);


            } catch (JSONException e) {
                e.printStackTrace();
            }
             return c;
      }

     @Override
        protected void onPostExecute(final JSONObject result) {

                     for (int i = 0; i < result.length(); i++) {

                    String name = result.getString(TAG_Name);                
                    final TextView nam = (TextView)   findViewById(R.id.txtname);
                    nam.setText(name);
                }





}

您正在主线程中使用与网络相关的代码。使用异步任务。
     private class GetJson extends AsyncTask<String, Void, String> {

        JSONObject c=null;
     @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }

        @Override
        protected JSONObject doInBackground(String... params) {

    JSONParser jParser = new JSONParser();        
            JSONObject json = jParser.getJSONFormUrl(url);        
            try {

                builder = json.getJSONArray(TAG_Name);
                 c = builder.getJSONObject(0);


            } catch (JSONException e) {
                e.printStackTrace();
            }
             return c;
      }

     @Override
        protected void onPostExecute(final JSONObject result) {

                     for (int i = 0; i < result.length(); i++) {

                    String name = result.getString(TAG_Name);                
                    final TextView nam = (TextView)   findViewById(R.id.txtname);
                    nam.setText(name);
                }





}