[英]Android Java - Getting a null object reference when parsing JSON
我正在嘗試使用Volley解析此JSON URL中的值,但是我從響應中返回了空值: http : //free.currencyconverterapi.com/api/v3/convert?q=CAD_USD&compact=ultra
{"CAD_USD":0.78246}
我要做的就是在textview中顯示JSON的值。
我得到的錯誤:
java.lang.NullPointerException:嘗試在空對象引用上調用虛擬方法'double java.lang.Double.doubleValue()'
我不確定我是否正確獲取JSON數據。 到目前為止,我有:
public class MainActivity extends AppCompatActivity {
RequestQueue rq;
Double conversionDouble;
String url = "http://free.currencyconverterapi.com/api/v3/convert?q=CAD_USD&compact=ultra";
private Spinner toSpinner, fromSpinner;
private Button convertBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addItemsOnToSpinner();
addListenerOnButton();
jsonSendRequest();
Button convertBtn = (Button) findViewById(R.id.convertBtn);
final EditText fromAmountEditText = findViewById(R.id.fromAmountEditText);
convertBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView toAmountTextView = findViewById(R.id.toAmountTextView);
String result = Double.toString(conversionDouble);
toAmountTextView.setText(result);
}
});
Spinner toSpinner = (Spinner) findViewById(R.id.toSpinner);
Spinner fromSpinner = (Spinner) findViewById(R.id.fromSpinner);
String toSpinnerText = toSpinner.getSelectedItem().toString();
String fromSpinnerText = fromSpinner.getSelectedItem().toString();
rq = Volley.newRequestQueue(this);
}
public void jsonSendRequest() {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
conversionDouble = response.getDouble("CAD_USD");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
}
public void addItemsOnToSpinner(){
Spinner toSpinner = (Spinner) findViewById(R.id.toSpinner);
Spinner fromSpinner = (Spinner) findViewById(R.id.fromSpinner);
List<String> currency = new ArrayList<String>();
currency.add("USD");
currency.add("CAD");
currency.add("CNY");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, currency
);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
toSpinner.setAdapter(dataAdapter);
fromSpinner.setAdapter(dataAdapter);
}
public void addListenerOnButton() {
Spinner fromSpinner = (Spinner) findViewById(R.id.fromSpinner);
Spinner toSpinner = (Spinner) findViewById(R.id.toSpinner);
Button convertBtn = (Button) findViewById(R.id.convertBtn);
}
}
任何幫助表示贊賞。
//Replace your method with below
public void jsonSendRequest() {
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://free.currencyconverterapi.com/api/v3/convert?q=CAD_USD&compact=ultra";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject jsonobject = new JSONObject(response);
if(jsonobject.has("CAD_USD")){
conversionDouble = jsonobject.getDouble("CAD_USD");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.