2016-10-21 1 views
-1

Unten ist die Methode, die ich programmiert habe, Zahlen für einen Taschenrechner einzugeben. Der Code ist voll funktionsfähig und fehlerfrei.Android - Löschen von Zeichen auf Knopfdruck

Ich versuche herauszufinden, wie ich eine separate Methode namens backspace schreiben würde, um jeweils ein Zeichen aus der Benutzereingabe zu entfernen.

Um ein Beispiel zu geben, wie onClick1 Werke (nur um es zu machen kristallklar, was ich tun will), wenn ich 2+4*6 eingegeben (Tasten, deren onClick Aktion onClick1 verbunden sind), dann würde textViewCalcHistExp1 den Text anzuzeigen 2+4*6, und arrayList würde die folgenden Werte enthalten: [2,+,4,*,6].

Ich möchte backspace so arbeiten, dass, wenn ich die Taste, textViewCalcHistExp1 ‚s Display jetzt 2+4* und arrayList (mit backspace Methode verknüpft) geklickt nun folgende Werte würden wäre halten: [2,+,4,*]. Hier

ist der Code:

ArrayList<String> arrayList = new ArrayList<String>(); 
String stringInput = ""; 
String stringInputWithOp = ""; 
public String prevCalc = ""; 

public void onClick1 (View view) { 
    TextView textViewCalcHistExp1 = (TextView) findViewById(R.id.textViewCalcHistExp1); 
    Button button = (Button) view; 
    stringInput = (String) button.getText().toString(); 


    if (!stringInput.contains("+") && !stringInput.contains("-") && !stringInput.contains("×") && !stringInput.contains("÷")) { 
     stringInputWithOp = stringInputWithOp+stringInput; 
     if (arrayList.size()>0) { 
      arrayList.remove((arrayList.size()-1)); 
     } 
     arrayList.add(stringInputWithOp); 
    } 
    else { 
     arrayList.add(stringInput); 
     arrayList.add(stringInput); 
     stringInputWithOp=""; 
    } 
    //This version truncates array formatting i.e. entering "2+4*6" would display "2+4*6" 
    textViewCalcHistExp1.setText(textViewCalcHistExp1.getText().toString()+stringInput); 

    //This version leaves array formatting i.e. entering "2+4*6" would display [2,+,4,*,6] ;good for debugging 
    //textViewCalcHistExp1.setText(arrayList.toString()); 
} 

Antwort

2

Sie so etwas tun könnte:

private void backspace() { 
    if (!arrayList.isEmpty()) { 
     // removing the last item from the ArrayList 
     arrayList.remove(arrayList.size() - 1); 
    } 

    String string = textViewCalcHistExp1.getText().toString(); 
    if (string.length() > 0) { 
     // removing the last character from the TextView 
     textViewCalcHistExp1.setText(string.substring(0, string.length() - 1)); 
    } 
} 

Sie auch textViewCalcHistExp1 eine Instanzvariable (arrayList bereits ist) bräuchten zu machen, indem er erklärt, außerhalb onClick1().