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