Android 我想在应用程序中不断更新信息
基本上,我有一个由片段组成的导航栏活动,我正在制作一个单元转换器。我已经清楚了怎么做的概念,只有一个简单的问题。因为我使用的是单选按钮,所以每次更改要转换为相同单位转换的值时,我都需要单击不同的单选按钮,然后单击相同的单选按钮Android 我想在应用程序中不断更新信息,android,android-studio,Android,Android Studio,基本上,我有一个由片段组成的导航栏活动,我正在制作一个单元转换器。我已经清楚了怎么做的概念,只有一个简单的问题。因为我使用的是单选按钮,所以每次更改要转换为相同单位转换的值时,我都需要单击不同的单选按钮,然后单击相同的单选按钮 final RadioGroup radioGroup = (RadioGroup) myView.findViewById(R.id.radio); radioGroup.setOnCheckedChangeListener(new OnCheckedChang
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克转换成公斤,我只需点击第一个放射组中的单选按钮gram和第二个放射组中的公斤,但是如果我想将520克转换成公斤,我需要在第二个放射组中单击gram,然后返回到kiggle,这是因为您正在通过只听CheckedChangeListener的单选按钮来更改editText的值 您只需要在editText中添加一个,并使用一个来侦听更改 然后,您就不需要再次单击单选按钮了 编辑:编写此代码。没有测试它,但可能足以理解解决方案
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;
}
}
}
}
我确实使用了TextChangeListener和TextWatcher,并在ContextChanged中添加了检查单选按钮的部分,但我有同样的问题,我可以尝试@KartikSharma@Taha我添加了一些代码,可以帮助您理解解决方案的模式。谢谢,我会看看你提供的@Kartik Sharma样本是否能帮我找到一些有用的东西