如何从 JSON 请求方法 Android 中取出变量
How to take out variable from JSON request method Android
我有一个从 JSON url 获取数据的方法,它工作正常
private void parseJSON() {
...
(some code)
...
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String creatorName = response.getString("name");
TextView textViewName = findViewById(R.id.text_view_name_detail);
textViewName.setText("Creator: "+creatorName);
String seeMoreLink = response.getString("see_more_link");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mRequestQueue.add(request);
}
但是...
我想把void方法外面的String seeMoreLink 取出来,然后交给buttonClick方法
public void seeMoreClicked (View view)
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(seeMoreLink));
startActivity(browserIntent);
}
只是在 json 方法之外看不到 seeMoreLink 变量,我想知道是否有可能以一种简单的方式取出该变量(不使用列表视图,适配器的 e.t.c。 )
我对解决它的最简单方法及其制作方式感兴趣(我认为 AsyncTask 应该可以工作,但我不想这样做,除非我知道没有使用 1 行代码的一些简单方法,我也尝试将它放入 TextView(它是隐藏的和不可见的,但应用程序经常崩溃,我应该在那里使用线程,但我认为隐藏 TextView 不是正确的方法使用so但可能我错了,需要专家的意见)。
试试这个:
//Declare a global variable
String link;
:
try {
String creatorName = response.getString("name");
TextView textViewName = findViewById(R.id.text_view_name_detail);
textViewName.setText("Creator: "+creatorName);
link = response.getString("see_more_link");
} catch (JSONException e) {
e.printStackTrace();
}
并放置此方法
public void seeMoreClicked (View view)
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(link));
startActivity(browserIntent);
}
我有一个从 JSON url 获取数据的方法,它工作正常
private void parseJSON() {
...
(some code)
...
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String creatorName = response.getString("name");
TextView textViewName = findViewById(R.id.text_view_name_detail);
textViewName.setText("Creator: "+creatorName);
String seeMoreLink = response.getString("see_more_link");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mRequestQueue.add(request);
}
但是... 我想把void方法外面的String seeMoreLink 取出来,然后交给buttonClick方法
public void seeMoreClicked (View view)
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(seeMoreLink));
startActivity(browserIntent);
}
只是在 json 方法之外看不到 seeMoreLink 变量,我想知道是否有可能以一种简单的方式取出该变量(不使用列表视图,适配器的 e.t.c。 )
我对解决它的最简单方法及其制作方式感兴趣(我认为 AsyncTask 应该可以工作,但我不想这样做,除非我知道没有使用 1 行代码的一些简单方法,我也尝试将它放入 TextView(它是隐藏的和不可见的,但应用程序经常崩溃,我应该在那里使用线程,但我认为隐藏 TextView 不是正确的方法使用so但可能我错了,需要专家的意见)。
试试这个:
//Declare a global variable
String link;
:
try {
String creatorName = response.getString("name");
TextView textViewName = findViewById(R.id.text_view_name_detail);
textViewName.setText("Creator: "+creatorName);
link = response.getString("see_more_link");
} catch (JSONException e) {
e.printStackTrace();
}
并放置此方法
public void seeMoreClicked (View view)
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(link));
startActivity(browserIntent);
}