2011-12-07 2 views
0

좋아, 나는 달러와 유로 사이에 웹에서 찾은 튜토리얼을 기반으로 유로화를 만들려고 노력하고있다. 문제는 튜토리얼이 2 개의 라디오 버튼을 사용하여 변환, 주문 참조 먼저 어떤 메소드를 호출 할 것인지를 프로그램에 알려줍니다. 프로그램이 두 개의 라디오 버튼에서 독립적으로 변환을 수행하도록하고 싶습니다. 예를 들어 유로 또는 달러로 숫자를 쓰면 텍스트보기가 나타납니다. 변환 버튼을 클릭하면 두 가지 방법이 있기 때문에 동시에 입력을 표시 할 수있는 방법이 없으면 작동하지 않습니다. 그래서 내 질문은 내가 두 개의 editText보기를 동시에 업데이트하는 방법입니다. 변환 단추를 누르면 감사합니다.통화 변환기의 입력을 즉시 업데이트하는 방법은 무엇입니까?

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class ConvertorActivity extends Activity { 
    TextView dollars; 
    TextView euros; 

    Button convert; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 

     dollars = (TextView)this.findViewById(R.id.dollars); 
     euros = (TextView)this.findViewById(R.id.euros); 



     convert = (Button)this.findViewById(R.id.convert); 

     convert.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       convertBoth(); 

      } 
     }); 
    } 

    public void convertBoth(){ 
     convertDollarsToEuros(); 
     convertEurosToDollars(); 
    } 
    protected void convertDollarsToEuros() { 
     double val = Double.parseDouble(dollars.getText().toString()); 
     // in a real app, we'd get this off the 'net 
     euros.setText(Double.toString(val*0.67)); 
    } 

    protected void convertEurosToDollars() { 
     double val = Double.parseDouble(euros.getText().toString()); 
     // in a real app, we'd get this off the 'net 
     dollars.setText(Double.toString(val/0.67)); 
    } 
} 

답변

1

나는 당신이 원하는 것은이 생각 : 사용자가 금액을 변경 한 경우 사용자가 유로 금액을 변경 한 경우, 유로

  • 로 변환 달러로 변환,

    하는 경우 그렇다면 구성원 변수 mLastEditedViewId을 추가하고 TextWatcher을 사용하여 마지막으로 변경된 필드를 추적 할 수 있습니다. 그런 다음 onClick 일 경우 그에 따라 convertDollarsToEuros() 또는 convertEurosToDollars을 호출하십시오. onCreate에서

    : 나는 그것을 수행하려는 경우 나쁜 일관성에 대한 바로 ... 미안

    private class MyTextWatcher implements TextWatcher { 
        private int mTextViewId; 
        public MyTextWatcher(TextView view) { 
        mTextViewId = view.getId(); 
        } 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
        } 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 
        mLastEditedViewId = mTextViewId; 
        } 
        public void afterTextChanged(Editable s) { 
        } 
    } 
    
  • +0

    ....하지만 :

    dollars.addTextChangedListener(new MyTextWatcher(dollars)); euros.addTextChangedListener(new MyTextWatcher(euros)); convert.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { switch (mLastEditedViewId) { case R.id.dollars: convertDollarsToEuros(); break; case R.id.euros: convertEurosToDollars(); break; } } }); 

    는 이너 TextWatcher에 대한 클래스를 정의 통화의 두 가지 유형에 대해 ... 어떻게해야합니까? – Stefan

    +0

    세 번째 통화로 엔이 있다고 가정 해보십시오. 엔에 대해'TextWatcher'를 새로운'TextView'에 첨부해야합니다. 그런 다음'convertDollarsToEuros'를'convertDollarsToOthers'로 변경하고 엔화 환율로 달러와 유로를 모두 갱신하십시오. 'convertEurosToOthers'와'convertYenToOthers'를 반복합니다. – chiuki

    +0

    잡았어 ... 고마워. – Stefan

    관련 문제