簡體   English   中英

如何將單個json對象值解析為按鈕

[英]How to parse a single json object value to a button

我想從我的遠程json文件中解析一個URL。 我在onCreate中有一個Button代碼,我想將json對象中的url解析為我的DynamicButton。

    private void parseJSON() {

    String url = https://www.example.com/data.json
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    try {
    JSONArray jsonArray = response.getJSONArray("MyDynamicUrl");

    for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject hit = jsonArray.getJSONObject(i);

    String myDynamicLink = hit.getString("Link");
    }

    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    error.printStackTrace();
    }
    });
    mRequestQueue.add(request);

    }

我在onCreate中有此按鈕,現在我想將myDynamicLink解析為該按鈕。 我收到錯誤消息“無法解析符號'MyDynamicLink'”

    DLbtn = findViewById(R.id.DynamicLinkButton);
    DLbtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    String url = myDynamicLink;
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
    }
    });

我的json文件結構

{
"MyDynamicUrl": [   

{"Link":"https://www.myDynamicUrl.com"}

]}

您應該將myDynamicLink定義為方法之外的字段,然后為其設置一個值:

 private String myDynamicLink;

 private void parseJSON() {
    ...
    myDynamicLink = hit.getString("Link");
    ...
 }

還要注意,該請求是異步發出的(在另一個線程上),這意味着您的按鈕可能已被初始化,您可以單擊它,但可能仍未收到響應。

另外,您可能開始使用將JSON對象轉換為Java對象的庫,例如Gson ,它將使您更輕松地解析JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM