我在Android Studio的Textview中显示货币汇率时遇到问题

时间:2019-05-05 11:21:11

标签: android json api json-api fixer.io

我无法在文本视图中显示货币汇率,我想要显示货币汇率,然后我必须计算沙特里亚尔和阿拉伯酋长国达勒姆的价值,我仅使用11种货币

我从3天开始解决它,但是它没有任何作用

   import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.Currency;


public class currencconvert extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

    private static final String TAG = "tag";
    //Url
    //this Prayer Timings is only for london now

    // Tag used to cancel the request
    String tag_json_obj = "json_obj_req";

    //progress Dialog
    ProgressDialog pDialog;

    TextView usdtxt, eurtxt, inrtxt, pkrtxt, afntxt, bdttxt, idrtxt, myrtxt, trytxt, aedtxt, sartxt;
    EditText addnum;
    Button cnvrtbtn;



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

        usdtxt      =  findViewById(R.id.usd);
        eurtxt      =  findViewById(R.id.euro);
        inrtxt     =   findViewById(R.id.inr);
        pkrtxt     = findViewById(R.id.pkr);
        afntxt   =     findViewById(R.id.afn);
        bdttxt      =  findViewById(R.id.bdt);
        idrtxt      =  findViewById(R.id.idr);
        myrtxt      =  findViewById(R.id.myr);
        trytxt      =  findViewById(R.id.tury);
        aedtxt      =  findViewById(R.id.aed);
        sartxt      =  findViewById(R.id.sar);

       Spinner spinner = (Spinner) findViewById(R.id.spin);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.currency, android.R.layout.simple_gallery_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);

       // link wagera he ye


        // function to get location
        Currencconvert();

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String text = parent.getItemAtPosition(position).toString();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }



    public void Currencconvert() {

        pDialog = new ProgressDialog(this);
        pDialog.setMessage("Loading...");
        pDialog.show();



        String Url  = "http://data.fixer.io/api/latest?access_key=9ec08275542de6b1646a986ffe785667";


        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, Url, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        try {

                            Toast.makeText(currencconvert.this, "your code run", Toast.LENGTH_SHORT).show();

                            // get date

                           //String date = response.getJSONArray("JSON").getJSONObject(0).get("date").toString();


                            // for getting namaz timings
                            String usdtx = response.getJSONArray("rates").getJSONObject(0).get("USD").toString();
                            String eurtx = response.getJSONArray("rates").getJSONObject(0).get("EUR").toString();
                            int inrtx =  Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("INR").toString());
                            int pkrtx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("PKR").toString());
                            int afntx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("AFN").toString());
                            int bdttx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("BDT").toString());
                            int idrtx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("IDR").toString());
                            int myrtx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("MYR").toString());
                            int trytx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("TRY").toString());
                            int aedtx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("AED").toString());
                            int sartx = Integer.parseInt(response.getJSONArray("rates").getJSONObject(0).get("SAR").toString());

                            Toast.makeText(currencconvert.this, "your code in  the middle", Toast.LENGTH_SHORT).show();

                            usdtxt.setText(usdtx);
                            eurtxt.setText(eurtx);
                            inrtxt.setText(inrtx);
                            pkrtxt.setText(pkrtx);
                            afntxt.setText(afntx);
                            bdttxt.setText(bdttx);
                            idrtxt.setText(idrtx);
                            myrtxt.setText(myrtx);
                            trytxt.setText(trytx);
                            aedtxt.setText(aedtx);
                            sartxt.setText(sartx);


                            Toast.makeText(currencconvert.this, "congrats your code run completend", Toast.LENGTH_SHORT).show();


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        pDialog.hide();
                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                Toast.makeText(currencconvert.this, "Error", Toast.LENGTH_SHORT).show();

                pDialog.hide();
            }
        });

// Adding request to request queue
        AppController.getInstance().addToRequestQueue(request, tag_json_obj);

    }
}

1 个答案:

答案 0 :(得分:0)

如果setText方法的参数是整数值,它将用作要显示的字符串资源的资源标识符。因此,您应该传递CharSequence而不是整数。所以你的代码应该是-

usdtxt.setText(String.valueOf(inrtx));
eurtxt.setText(String.valueOf(pkrtx));
...