Comme je suis très nouveau pour Android, j'essaie juste d'apprendre des choses. Alors excusez moi si je pose des questions idiotes.
Voici à quoi ressemble mon application Android.Comment mettre à jour la valeur finale si l'utilisateur entre une nouvelle valeur avec Android TextWatcher
J'ajoute un nouveau champ edittext où l'utilisateur peut ajouter une valeur comme (par exemple 3%), s'il le souhaite. Ensuite, la valeur entrée par l'utilisateur (par exemple, 3%) doit être calculée avec la valeur totale dans le résultat TextView et cette valeur doit s'afficher dans le champ de texte Sub Value. Par exemple, si la valeur totale dans la vue texte Résultat final est 1000 et l'entrée utilisateur 3%, le champ Valeur secondaire affiche 30. Puis le résultat final doit être mis à jour à 1030. Aidez-moi à résoudre ce problème. Merci à l'avance
public class AddTwo extends AppCompatActivity {
EditText edit1, edit2, edit3;
EditText edit4, edit5, edit6;
TextView textViewSub1, textViewSub2, textViewSub3, textViewSub4, textViewResult;
TextView nbtText;
EditText editNbt, vat;
Button btnNext;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_add_two);
btnNext = (Button) findViewById(R.id.button2);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
gotoNextPage();
}
private void gotoNextPage() {
Intent i = new Intent(AddTwo.this, NewClass.class);
startActivity(i);
}
});
/*Vat variables*/
editNbt = (EditText) findViewById(R.id.Edittext11);
/*First row variables*/
edit1 = (EditText) findViewById(R.id.editText1);
edit2 = (EditText) findViewById(R.id.editText2);
edit3 = (EditText) findViewById(R.id.editText3);
textViewSub1 = (TextView) findViewById(R.id.TextViewsub1);
/*Second row variables*/
edit4 = (EditText) findViewById(R.id.editText5);
edit5 = (EditText) findViewById(R.id.editText6);
edit6 = (EditText) findViewById(R.id.editText7);
textViewSub2 = (TextView) findViewById(R.id.TextViewsub2);
/*Final Total TextView variable*/
textViewResult = (TextView) findViewById(R.id.textView_result);
/*NBT value variable*/
nbtText = (TextView) findViewById(R.id.textViewNbt12);
edit1.addTextChangedListener(new LashCustomTextWatcher());
edit2.addTextChangedListener(new LashCustomTextWatcher());
edit3.addTextChangedListener(new LashCustomTextWatcher());
edit4.addTextChangedListener(new LashCustomTextWatcher());
edit5.addTextChangedListener(new LashCustomTextWatcher());
edit6.addTextChangedListener(new LashCustomTextWatcher());
textViewResult.addTextChangedListener(new LashCustomTextWatcher());
}
public class LashCustomTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
textViewResult.setText(lashCalculate());
}
@Override
public void afterTextChanged(Editable editable) {
textViewResult.setText(lashCalculate());
}
}
public String lashCalculate() {
//declaring variables
double row1_value = 0;
double row2_value = 0;
//Optional Values
double row_nbt_value = 0;
double row1_value_new = 0;
DecimalFormat df = new DecimalFormat("0.00##");
//calculate first row
if (!edit1.getText().toString().equals("") && !edit2.getText().toString().equals("")) {
double num1 = Double.parseDouble((edit1.getText().toString()));
double num2 = Double.parseDouble((edit2.getText().toString()));
row1_value = num1 * num2;
double num3 = 0;
if (!edit3.getText().toString().equals("")) {
num3 = Double.parseDouble((edit3.getText().toString()));
row1_value = (((100 - num3) * num2) * num1)/100;
}
textViewSub1.setText(df.format(row1_value));
}
//calculate second row
if (!edit4.getText().toString().equals("") && !edit5.getText().toString().equals("")) {
double num4 = Double.parseDouble((edit4.getText().toString()));
double num5 = Double.parseDouble((edit5.getText().toString()));
row2_value = num4 * num5;
double num6 = 0;
if (!edit6.getText().toString().equals("")) {
num6 = Double.parseDouble((edit6.getText().toString()));
row2_value = (((100 - num6) * num5) * num4)/100;
}
textViewSub2.setText(df.format(row2_value));
}
/* ========================================================================== */
//calculate the NBT
double numNbt = 0;
if (!editNbt.getText().toString().equals("")) {
numNbt = Double.parseDouble(editNbt.getText().toString());
row_nbt_value = numNbt/100;
if (row1_value !=0){
row1_value_new = row1_value * row_nbt_value;
}
nbtText.setText(df.format(row1_value_new));
}
return df.format(row1_value_new + row2_value);
}
}
Ceci est mon LogCat:
09-12 09: 55: 51,908 1624-1624 /? I/InstallerConnection: connexion ... 09-12 09: 55: 51.936 1624-1624 /? I/InstallerConnection: déconnexion ... 09-12 09: 55: 51.978 1624-1624/system_process I/InstallerConnection: connexion ... 09-12 09: 56: 04.447 2433-2502/com.google.android.gms I/FA-SVC: La mesure de l'application démarre, version: 11055 09-12 09: 56: 04.530 2433-2922/com.google.android.gms I/FA-SVC: Cette instance est marquée comme téléchargeur 09 -12 09: 56: 04.794 2433-2441/com.google.android.gms W/SQLiteConnectionPool: Un objet SQLiteConnection pour la base de données '/data/user/0/com.google.android.gms/databases/networkstatistics.sqlite' fuite! Veuillez corriger votre application pour mettre fin aux transactions en cours correctement et fermer la base de données lorsqu'elle n'est plus nécessaire. 09-12 09: 56: 14.889 2433-2441/com.google.android.gms W/SQLiteConnectionPool: un objet SQLiteConnection pour la base de données '/data/user/0/com.google.android.gms/databases/metrics.db .16 'a été divulgué! Veuillez corriger votre application pour mettre fin aux transactions en cours correctement et fermer la base de données lorsqu'elle n'est plus nécessaire. 09-12 09: 56: 14.890 2433-2441/com.google.android.gms W/SQLiteConnectionPool: un objet SQLiteConnection pour la base de données '/data/user/0/com.google.android.gms/databases/help_responses.db .18 'a été divulgué! Veuillez corriger votre application pour mettre fin aux transactions en cours correctement et fermer la base de données lorsqu'elle n'est plus nécessaire. 09-12 09: 56: 14.892 2433-2441/com.google.android.gms W/SQLiteConnectionPool: un objet SQLiteConnection pour la base de données '/data/user/0/com.google.android.gms/databases/auto_complete_suggestions.db 'a été divulgué! Veuillez corriger votre application pour mettre fin aux transactions en cours correctement et fermer la base de données lorsqu'elle n'est plus nécessaire.
dans calculate même méthode lashCalculate(); –
@J Ramesh, Oui, je calcule dans la même méthode, mais ne fonctionne pas, Pouvez-vous me donner une suggestion s'il vous plaît – Lash
Pouvez-vous s'il vous plaît xml? –