2017-09-11 1 views
0

Je suis nouveau au studio android et je construisais une application de calculatrice, mon problème est chaque fois que j'entre un numéro, puis sélectionnez un opérateur le nombre de la vue du texte disparaît comme si je veulent 2+4 et je presse 2 puis +, 2 disparaît de la vue de texte, puis quand je presse 4, + disparaît de la vue de texte, mais le résultat est correctAndroid Texte disparaît de la vue du texte après la prochaine entrée

Voici mon code java ...

buttonAdd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (edt1 == null){ 
       edt1.setText(""); 
      }else { 
       mValueOne = Float.parseFloat(edt1.getText() + ""); 
       mAddition = true; 
       edt1.setText(null); 
      } 
     } 
    }); 

    buttonSub.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mValueOne = Float.parseFloat(edt1.getText() + ""); 
      mSubtract = true ; 
      edt1.setText(null); 
     } 
    }); 

    buttonMul.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mValueOne = Float.parseFloat(edt1.getText() + ""); 
      mMultiplication = true ; 
      edt1.setText(null); 
     } 
    }); 

    buttonDivision.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mValueOne = Float.parseFloat(edt1.getText()+""); 
      mDivision = true ; 
      edt1.setText(null); 
     } 
    }); 

    buttonEqual.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mValueTwo = Float.parseFloat(edt1.getText() + ""); 

      if (mAddition == true){ 

       edt1.setText(mValueOne + mValueTwo +""); 
       mAddition=false; 
      } 


      if (mSubtract == true){ 
       edt1.setText(mValueOne - mValueTwo+""); 
       mSubtract=false; 
      } 

      if (mMultiplication == true){ 
       edt1.setText(mValueOne * mValueTwo+""); 
       mMultiplication=false; 
      } 

      if (mDivision == true){ 
       edt1.setText(mValueOne/mValueTwo+""); 
       mDivision=false; 
      } 
     } 
    }); 

    buttonC.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      edt1.setText(""); 
     } 
    }); 

    button10.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      edt1.setText(edt1.getText()+"."); 
     } 
    }); 
} 
+0

edt1.setText (null); effacera votre valeur chaque fois que vous cliquez sur le bouton. utilisez edit1.append() pour ajouter la valeur à votre edittext au clic. obtenir toutes les valeurs quand vous tapez = et calculez –

+0

Pouvez-vous expliquer un peu comment utiliser la méthode append dans ce code? –

Répondre

0

Vous êtes collection ng les données correctement, mais vous continuez à mettre votre EDT1 à null, puis lorsque vous appuyez sur + EDT1 sera toujours nul

if (edt1 == null){ 
      edt1.setText(""); 
     } 

Puis-je demander pourquoi vous utilisez le même champ editText pour ce faire ??

Je suggère d'utiliser 2 champs edittext.

1 pour le premier numéro 1 pour la deuxième numéro

puis afficher le résultat dans un textview?

Vous pouvez obtenir quelque chose comme ceci avec le code ci-dessous enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 

    <EditText 
     android:id="@+id/first_number" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2" 
     android:layout_weight="0.40"/> 

    <EditText 
     android:id="@+id/second_number" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2" 
     android:layout_weight="0.40"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" = " 
     android:layout_weight="0.10"/> 

    <TextView 
     android:id="@+id/result" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="4" 
     android:layout_weight="0.20"/> 

</LinearLayout> 

Ensuite, vous pouvez collecter des données de FIRST_NUMBER et second_number et afficher le résultat dans le résultat.

0

utiliser la méthode append pour ajouter du texte après existant

edt1.append(someString); 
0

Vous définissez le Modifier le texte à null chaque fois qu'un bouton est cliqué. Cela effacera tout le texte à l'intérieur. Et si vous voulez ajouter du texte, utilisez la méthode append.