Java Json请求Android

Java Json请求Android,java,android,json,Java,Android,Json,公共类BtcPaymentQR扩展AppCompative活动{ ImageView QrCode; RequestQueue mQueue; public static String btcAddress = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activit

公共类BtcPaymentQR扩展AppCompative活动{

ImageView QrCode;
RequestQueue mQueue;
public static String btcAddress = "";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_btc_payment_qr);

    QrCode = findViewById(R.id.imageViewQR);
    mQueue = Volley.newRequestQueue(this);
    getAddress();

    Log.i("test", "onCreate: " + btcAddress);

}

public void getAddress(){
    String url = "xxx"

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONObject jsonObject = response.getJSONObject("address");
                        String a = jsonObject.getString("extkey_next_receiving_address");
                        BtcPaymentQR.btcAddress=a;


                        Log.i("test", "onResponse: " + btcAddress);

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

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });
    mQueue.add(request);
}
ImageView-QrCode;
请求队列MQUE;
公共静态字符串btcAddress=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u btc\u payment\u qr);
QrCode=findViewById(R.id.imageViewQR);
mQueue=Volley.newRequestQueue(this);
getAddress();
Log.i(“测试”,“创建:+btcAddress”);
}
公共地址(){
字符串url=“xxx”
JsonObjectRequest=新的JsonObjectRequest(request.Method.GET,url,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONObject JSONObject=response.getJSONObject(“地址”);
字符串a=jsonObject.getString(“extkey\u next\u receiving\u address”);
BtcPaymentQR.btcAddress=a;
Log.i(“测试”,“响应:+btcAddress”);
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
添加(请求);
}

我的问题是,如何从该方法中获取“a”的值。我已经尝试过将其保存在另一个全局变量中,使用return、get和set。
我需要在另一个方法中使用它的值

简单的方法是使用静态变量。为类定义一个静态变量,并将“a”的值分配给这个静态变量,并在任何地方使用它。

使用静态变量保存响应可以解决您的问题,静态变量是类而不是对象的一部分,因此您可以使用静态变量在我的示例中,类名称为
MainActivity.myValue

您的活动或片段类:

MainActivity Extends AppCompatActivity{

public static String myValue="";
//define this in your classs where you run the web service

}
你的回答方法

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONObject jsonObject = response.getJSONObject("address");
                        String a = jsonObject.getString("extkey_next_receiving_address");

                     MainActivity.myValue=a;
                        Log.i("test", "onResponse: " + MainActivity.myValue);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("test2", "onErrorResponse: error");
        }
    });
    mQueue.add(request);
}
JsonObjectRequest-request=newjsonobjectrequest(request.Method.GET,url,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONObject JSONObject=response.getJSONObject(“地址”);
字符串a=jsonObject.getString(“extkey\u next\u receiving\u address”);
MainActivity.myValue=a;
Log.i(“测试”、“onResponse:+MainActivity.myValue”);
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.i(“test2”,“onErrorResponse:error”);
}
});
添加(请求);
}

您尝试的“一切”都有什么问题?要么值为空,要么有错误,但onResponse方法在日志中正确。首先感谢您的帮助,其次我尝试了您的代码,但不起作用。我不知道可能是我的错。我用log-in-oncreate方法检查它,但是变量在那里emptyNo,我无法获取它。你能更新你的代码吗。我给你的答案是正确的你的问题的解决方案是静态变量你没有像我说的那样上传代码,为什么你没有用我说的方式。你能给我一个你尝试的截图吗,也许你做错了!