如何使用截击以新意图解析 json 文件
How to parse json file in new intent with volley
我正在开发一个 android 应用程序,我需要从互联网上获取一些数据,例如名称和 link,我看了一些关于如何使用 volley 解析 JSON 文件并从互联网上获取我的数据,但现在我想在创建新意图时显示一些数据,但它似乎不起作用我的 Textview 保持不变,这是代码:
public class Main2Activity extends AppCompatActivity {
private String radioName;
private TextView radionametxt;
private String radioLink;
private TextView radiolinktxt;
private String urlJsonArry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent i = getIntent();
final String radioname = i.getStringExtra("radioname");
setTitle(radioname);
urlJsonArry = "https://api.myjson.com/bins/1f7y96";
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
// Parsing json array response
// loop through each json object
//jsonResponse = "";
for (int i = 0; i < response.length(); i++) {
JSONObject radio = (JSONObject) response
.get(i);
// String name = radio.getString("name");
// String link = radio.getString("email");
//radioName = name;
// radioLink = link;
radioName = radio.getString("name");
radioLink = radio.getString("email");
}
radionametxt = (TextView) findViewById(R.id.name);
radionametxt.setText(radioName);
radiolinktxt = (TextView) findViewById(R.id.link);
radiolinktxt.append(radioLink);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error", "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
xml代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.radline.radapp.radapp.Main2Activity">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name"
android:textSize="40sp"
tools:layout_constraintTop_creator="1"
android:layout_marginTop="62dp"
tools:layout_constraintLeft_creator="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_below="@+id/link"
android:layout_alignStart="@+id/link" />
<TextView
android:id="@+id/link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="link"
android:textSize="40sp"
tools:layout_constraintTop_creator="1"
tools:layout_constraintBottom_creator="1"
android:layout_marginStart="108dp"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_constraintLeft_creator="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginLeft="108dp"
app:layout_constraintVertical_bias="0.321" />
Json代码
[
{
"name": "radone",
"link": "ravi8x@gmail.com"
}
]
我获取了 JsonObject 而不是 JsonArray,并记得添加我之前忘记的请求队列代码:
package com.radline.radapp.radapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request.Method;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
public class Main2Activity extends AppCompatActivity {
private String radioName;
private TextView radionametxt;
private String radioLink;
private TextView radiolinktxt;
private String urlJsonArry;
private String urlJsonObj;
private RequestQueue requestQueue;
private static String TAG = Main2Activity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent i = getIntent();
final String radioname = i.getStringExtra("radioname");
setTitle(radioname);
radionametxt = (TextView) findViewById(R.id.name);
radiolinktxt = (TextView) findViewById(R.id.link);
requestQueue = Volley.newRequestQueue(this);
urlJsonObj = "https://api.myjson.com/bins/t92sy";
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
urlJsonObj, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
try {
// Parsing json object response
// response will be a json object
radioName = response.getString("name");
radioLink = response.getString("audiolink");
radionametxt.setText(radioName);
radiolinktxt.setText(radioLink);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
// hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
// hide the progress dialog
// hidepDialog();
}
});
// Adding request to request queue
requestQueue.add(jsonObjReq);
}
}
还将 xml 更改为:
{
"name": "Cyntric Station",
"audiolink": "http://111.223.51.8:8000",
"picturelink": "https://cdn.pixabay.com/photo/2018/01/04/08/04/people-3060107_960_720.jpg",
"motto": "Your number 1 online radio station"
}
我正在开发一个 android 应用程序,我需要从互联网上获取一些数据,例如名称和 link,我看了一些关于如何使用 volley 解析 JSON 文件并从互联网上获取我的数据,但现在我想在创建新意图时显示一些数据,但它似乎不起作用我的 Textview 保持不变,这是代码:
public class Main2Activity extends AppCompatActivity {
private String radioName;
private TextView radionametxt;
private String radioLink;
private TextView radiolinktxt;
private String urlJsonArry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent i = getIntent();
final String radioname = i.getStringExtra("radioname");
setTitle(radioname);
urlJsonArry = "https://api.myjson.com/bins/1f7y96";
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
// Parsing json array response
// loop through each json object
//jsonResponse = "";
for (int i = 0; i < response.length(); i++) {
JSONObject radio = (JSONObject) response
.get(i);
// String name = radio.getString("name");
// String link = radio.getString("email");
//radioName = name;
// radioLink = link;
radioName = radio.getString("name");
radioLink = radio.getString("email");
}
radionametxt = (TextView) findViewById(R.id.name);
radionametxt.setText(radioName);
radiolinktxt = (TextView) findViewById(R.id.link);
radiolinktxt.append(radioLink);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error", "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
xml代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.radline.radapp.radapp.Main2Activity">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name"
android:textSize="40sp"
tools:layout_constraintTop_creator="1"
android:layout_marginTop="62dp"
tools:layout_constraintLeft_creator="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_below="@+id/link"
android:layout_alignStart="@+id/link" />
<TextView
android:id="@+id/link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="link"
android:textSize="40sp"
tools:layout_constraintTop_creator="1"
tools:layout_constraintBottom_creator="1"
android:layout_marginStart="108dp"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_constraintLeft_creator="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginLeft="108dp"
app:layout_constraintVertical_bias="0.321" />
Json代码
[
{
"name": "radone",
"link": "ravi8x@gmail.com"
}
]
我获取了 JsonObject 而不是 JsonArray,并记得添加我之前忘记的请求队列代码:
package com.radline.radapp.radapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request.Method;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
public class Main2Activity extends AppCompatActivity {
private String radioName;
private TextView radionametxt;
private String radioLink;
private TextView radiolinktxt;
private String urlJsonArry;
private String urlJsonObj;
private RequestQueue requestQueue;
private static String TAG = Main2Activity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent i = getIntent();
final String radioname = i.getStringExtra("radioname");
setTitle(radioname);
radionametxt = (TextView) findViewById(R.id.name);
radiolinktxt = (TextView) findViewById(R.id.link);
requestQueue = Volley.newRequestQueue(this);
urlJsonObj = "https://api.myjson.com/bins/t92sy";
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
urlJsonObj, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
try {
// Parsing json object response
// response will be a json object
radioName = response.getString("name");
radioLink = response.getString("audiolink");
radionametxt.setText(radioName);
radiolinktxt.setText(radioLink);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
// hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
// hide the progress dialog
// hidepDialog();
}
});
// Adding request to request queue
requestQueue.add(jsonObjReq);
}
}
还将 xml 更改为:
{
"name": "Cyntric Station",
"audiolink": "http://111.223.51.8:8000",
"picturelink": "https://cdn.pixabay.com/photo/2018/01/04/08/04/people-3060107_960_720.jpg",
"motto": "Your number 1 online radio station"
}