2017-10-12 9 views
0

私はアンドロイドには新しく、bitrexから現在のレートをフェッチしてインドのルピーに変換するアプリを開発していますが、ハンドラは一度だけ実行され、金利がBITREX APIでなぜ私のハンドラはデータを更新するために1回だけ実行されるのですか

を変更する場合でも、最初の時間が経過した後、その値を変更していない。これは、私の活動

public class Test extends AppCompatActivity { 
double last; 
double inr; 
double x; 


TextView tv, tt, ui,uer; 


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





    uer=(TextView)findViewById(R.id.usern); 
    ui = (TextView) findViewById(R.id.uid); 
    tv = (TextView) findViewById(R.id.name); 
    tt = (TextView) findViewById(R.id.email); 


    final RequestQueue queue = Volley.newRequestQueue(this); 
    final RequestQueue queuee = Volley.newRequestQueue(this); 

    String url = "https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc"; 
    String urll="http://api.fixer.io/latest?base=USD"; 

    final StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 

        JSONObject json = null; 
        try { 
         json = new JSONObject(response); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        try { 
         JSONObject result = json.getJSONObject("result"); 

         last = result.getDouble("Last"); 
         tv.setText(String.valueOf(last)); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 


    final StringRequest stringRequestmoney = new StringRequest(Request.Method.GET, urll, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 


        JSONObject jjson = null; 
        try { 
         jjson = new JSONObject(response); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        try { 
         JSONObject money = jjson.getJSONObject("rates"); 
         inr = money.getDouble("INR"); 
         tt.setText(String.valueOf(inr)); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 


//  queue.add(stringRequest); 
//  queuee.add(stringRequestmoney); 
    final Handler handler = new Handler(); 

    handler.postDelayed(new Runnable() { 
          public void run() { 
           //do something 
           queue.add(stringRequest); 
           queuee.add(stringRequestmoney); 
           x = (last * inr);  
           ui.setText(""+x); 
           handler.postDelayed(this, 5000); 

          } 
         }, 5000); 



} 
+0

ハンドラがもう一度呼び出されなかったことをどのように知っていますか? – nhoxbypass

+0

APIのレートが変更されましたが、Androidアプリケーションで変更されませんでした@GeniusQ –

答えて

0

である私は、これが問題の原因である場合は知らないが、してみてくださいあなたのエラーをキャッチするには

handler.postDelayed(new Runnable() { 
        public void run() { 
           try{ 
            //do something 
            queue.add(stringRequest); 
            queuee.add(stringRequestmoney); 
            x = (last * inr);  
            ui.setText(""+x); 
            handler.postDelayed(this, 5000); 
          } 
         finally { 
         // 100% guarantee that this always happens, even if 
         // your update method throws an exception 
         handler.postDelayed(this, 5000); 
           } 
           } 
          }, 5000); 
+0

コードに問題が見つかりません。ハンドラに何か間違って書いていますか? @Boukharist –

関連する問題