2017-01-01 2 views
-2

基本的には、断片からなるナビゲーションバーのアクティビティがあり、ユニットコンバータを作っています。私はそれをクリアする方法の概念を持っている、ただ一つの簡単な問題がある。私はラジオボタンを使用していますので、私は値を変更するたびに同じ単位変換用に変換するために、私があれば、別のラジオボタンをクリックして、例えば私はアプリケーション内の情報を更新し続けたい

final RadioGroup radioGroup = (RadioGroup) myView.findViewById(R.id.radio); 
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, final int checkedId) { 
      // checkedId is the RadioButton selected 
      switch (checkedId) { 
       case R.id.radioGram: 
        final TextView textView = (TextView) myView.findViewById(R.id.EditTextFrom); 
        textView.setText("Gram"); 

        final RadioGroup radioGroup = (RadioGroup) myView.findViewById(R.id.radio2); 
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
         @Override 
         public void onCheckedChanged(RadioGroup radioGroup, int checkedId2) { 
          switch (checkedId2) { 
           case R.id.radioGram2: 
            TextView textView = (TextView) myView.findViewById(R.id.EditTextTo); 
            textView.setText("Gram"); 

            EditText calc = (EditText) myView.findViewById(R.id.From); 
            String gramholder = calc.getText().toString(); 
            gram = Integer.parseInt(gramholder) * 1; 

            EditText editText = (EditText) myView.findViewById(R.id.To); 
            editText.setText(String.valueOf(gram)); 
            break; 

           case R.id.radioKilogram2: 
            TextView textView2 = (TextView) myView.findViewById(R.id.EditTextTo); 
            textView2.setText("Kilogram"); 

            EditText calc2 = (EditText) myView.findViewById(R.id.From); 
            String gramholder2 = calc2.getText().toString(); 
            gram2 = Integer.parseInt(gramholder2) * 0.001; 

            EditText editText2 = (EditText) myView.findViewById(R.id.To); 
            editText2.setText(String.valueOf(gram2)); 
            break; 


          } 

         } 


        }); 

だから、同じラジオボタンに戻す]をクリックする必要があります私は500グラムからキログラムに変換したい、ラジオボタングラム(最初のラジオグループ内)とキログラム(2番目のラジオグループ内)をクリックするだけだが、520グラムからキログラムに変換したい場合は、第2のラジオ・グループのキログラムに戻る

答えて

0

これは、ラジオボタンのCheckedChangeListenerだけを聞くことによってeditTextの値を変更しているために起こります。

TextChangeListenerをeditTextに追加し、変更を聞くにはTextWatcherを使用するだけです。

次に、ラジオボタンをもう一度クリックする必要はありません。

編集:このコードを書き込みました。テストはしませんでしたが、おそらく解決策を理解するのに十分です。

import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.RadioGroup; 
import android.widget.TextView; 

/** 
* Created by Kartik Sharma on 01/01/17. 
*/ 
public class Stack extends Activity implements RadioGroup.OnCheckedChangeListener{ 

    EditText editText_From, editText_To; 
    RadioGroup radioGroup_From, radioGroup_To; 
    View myView; 
    private final String GRAM = "GRAM", KILOGRAM = "KILOGRAM"; 
    String currentSelectedFrom = GRAM, currentSelectedTo = GRAM; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     myView = findViewById(R.id.fragment); 

     editText_From = (EditText) myView.findViewById(R.id.From); 
     editText_To = (EditText) myView.findViewById(R.id.To); 


     radioGroup_From = (RadioGroup) findViewById(R.id.radio); 
     radioGroup_To = (RadioGroup) myView.findViewById(R.id.radio2); 

     editText_From.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       if(currentSelectedTo == KILOGRAM){ 
        double gram2 = Integer.parseInt(s.toString()) * 0.001; 

        editText_To.setText(String.valueOf(gram2)); 
       }else if(currentSelectedTo == GRAM){ 
        double gram = Integer.parseInt(s.toString()) * 1; 

        editText_To.setText(String.valueOf(gram)); 
       } 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 
     //SIMILARLY FOR EDITTEXT_TO IF REVERSE CALCULATION IS NEEDED 
     radioGroup_From.setOnCheckedChangeListener(this); 
     radioGroup_To.setOnCheckedChangeListener(this); 


    } 

    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     if(group == radioGroup_From){ 
      switch(checkedId){ 
       case R.id.radioGram : 
        //PERSON SELECTED GRAM IN FROM SECTION 

        final TextView textView = (TextView) myView.findViewById(R.id.EditTextFrom); 
        textView.setText("Gram"); 

        currentSelectedFrom = GRAM; 
        break; 
      } 
     }else if(group == radioGroup_To){ 
      switch (checkedId) { 
       case R.id.radioGram2: 
        //PERSON SELECTED GRAM IN TO SECTION 
        TextView textView = (TextView) myView.findViewById(R.id.EditTextTo); 
        textView.setText("Gram"); 

        String gramholder = editText_From.getText().toString(); 
        double gram = Integer.parseInt(gramholder) * 1; 

        editText_To.setText(String.valueOf(gram)); 

        currentSelectedTo = GRAM; 
        break; 

       case R.id.radioKilogram2: 
        //PERSON SELECTED KILOGRAM IN TO SECTION 

        TextView textView2 = (TextView) myView.findViewById(R.id.EditTextTo); 
        textView2.setText("Kilogram"); 

        String gramholder2 = editText_From.getText().toString(); 
        double gram2 = Integer.parseInt(gramholder2) * 0.001; 

        editText_To.setText(String.valueOf(gram2)); 

        currentSelectedTo = KILOGRAM; 
        break; 


      } 

     } 
    } 

} 
+0

私は、私はいくつかのコードを追加している私は@Kartikシャルマ – Taha

+0

@Tahaを試みることができる何か、TextChangeListenerとTextWatcherを使用しました、そしてそれはonTextChangedにラジオボタンをチェックする部分を追加しましたが、私は同じ問題を抱えています解決方法のパターンを理解するのに役立つ可能性があります。 –

+0

ありがとうございました。あなたが提供してくれたサンプルを@Kartik Sharmaで手に入れることができますか? – Taha

関連する問題