簡體   English   中英

轉換器應用程序上的 java.lang.NullPointerException

[英]java.lang.NullPointerException on converter app

我目前正在創建一個帶有 API 調用的實時貨幣轉換器應用程序,但是每當我單擊按鈕轉換貨幣時,我的應用程序就會崩潰並且我得到以下行:

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.gson.JsonObject com.google.gson.JsonObject.getAsJsonObject(java.lang.String)' on a null object reference
        at com.example.converterproject.MoneyActivity$1$1.onResponse(MoneyActivity.java:70)

這是我寫的一些代碼:

MoneyButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            RetrofitInterface retrofitInterface = RetrofitBuilder.getRetrofitInstance().create(RetrofitInterface.class);
            Call<JsonObject> call = retrofitInterface.getExchangeCurrency(MoneyTo.getSelectedItem().toString());
            call.enqueue(new Callback<JsonObject>() {
                @Override
                public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
                    JsonObject res = response.body();
                    JsonObject rates = res.getAsJsonObject("rates");
                    double currency = Double.valueOf(MoneyEd.getText().toString());
                    double multiplier = Double.valueOf(rates.get(MoneyFrom.getSelectedItem().toString()).toString());
                    double result = currency * multiplier;
                    MoneyTextView.setText(String.valueOf(result));


                }

                @Override
                public void onFailure(Call<JsonObject> call, Throwable t) {

                }
            });
        }
    });

所以顯然JsonObject rates = res.getAsJsonObject("rates"); 是導致問題的線路。 我真的不知道如何解決這個問題,所以我會非常感謝一些幫助

看來您的響應是 JsonObject 並且您不需要獲取 res 即 JsonObject => JsonObject res = response.body(); 作為 JsonObject。

所以如果你刪除這一行 JsonObject rates = res.getAsJsonObject("rates"); 並使用 res 代替。 我認為這會奏效。

暫無
暫無

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

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