2017-05-08 1 views
0

Ich habe versucht, einen Taschenrechner zu bauen, wie wenn ich Button "1" klicken, wird es "100" auf Text anzeigen, aber in der Berechnung wird es Wert "1 ". Also als "200" beim Drücken der Taste "2". Ich habe separate gettext() und settext() beim Klicken auf die Schaltfläche gemacht. Wenn die Schaltfläche zum ersten Mal angeklickt wird, funktioniert es einwandfrei. Aber nichts geht, wenn ich einen anderen Knopf drücke. Wenn z. B. die Taste "1" und dann "3" gedrückt wird, sollte der Wert "13" und der Text auf "100300" gesetzt werden. Aber es tut das nicht.Es zeigt nur "100", wenn Taste "1" gedrückt wird, egal wie oft ich die Taste nach dem ersten Mal drücke.Es stoppt setText() und getText() {1 = 1,2 = ২,3 = 3,4 = 4,5 = 5,6 = 6,7 = 7,8 = 8,9 = 9} Hier ist mein CodebeispielMüssen Arbeit setText und getText mehr als einmal machen

public class MainActivity extends  AppCompatActivity implements             
View.OnClickListener { 
Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9 
char op; 
TextView eresult; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
typecast(); 
btn0.setOnClickListener(this); 
btn1.setOnClickListener(this); 
btn2.setOnClickListener(this); 
btn3.setOnClickListener(this); 
btn4.setOnClickListener(this); 
btn5.setOnClickListener(this); 
btn6.setOnClickListener(this); 
btn7.setOnClickListener(this); 
btn8.setOnClickListener(this); 
btn9.setOnClickListener(this); 

} 

public void typecast() { 


eresult = (TextView) findViewById(R.id.textview); 
btn0 = (Button) findViewById(R.id.zero); 
btn1 = (Button) findViewById(R.id.one); 
btn2 = (Button) findViewById(R.id.two); 
btn3 = (Button) findViewById(R.id.three); 
btn4 = (Button) findViewById(R.id.four); 
btn5 = (Button) findViewById(R.id.five); 
btn6 = (Button) findViewById(R.id.six); 
btn7 = (Button) findViewById(R.id.seven); 
btn8 = (Button) findViewById(R.id.eight); 
btn9 = (Button) findViewById(R.id.nine); 

} 
@Override 
public void onClick(View v) { 
if (v.getId() == R.id.zero) { 
eresult.setText("000"); 
result.getText().equals(0); 
} 

else if (v.getId() == R.id.one) { 
eresult.setText("100"); 
eresult.getText().equals(1); 
} 
else if (v.getId() == R.id.two) { 
eresult.setText("200"); 
eresult.getText().equals(2); 
} 
else if (v.getId() == R.id.three) { 
eresult.setText("300"); 
eresult.getText().equals(3); 
} 
else if (v.getId() == R.id.four) { 
eresult.setText("400"); 
eresult.getText().equals(4); 
} 
else if (v.getId() == R.id.five) { 
eresult.setText("500"); 
eresult.getText().equals(5); 
} 
else if (v.getId() == R.id.six) { 
eresult.setText("600"); 
eresult.getText().equals(6); 
} 
else if (v.getId() == R.id.seven) { 
eresult.setText("700"); 
eresult.getText().equals(7); 
} 
else if (v.getId() == R.id.eight) { 
eresult.setText("800"); 
eresult.getText().equals(8); 
} 
else if (v.getId() == R.id.nine) { 
eresult.setText("900"); 
eresult.getText().equals(9); 
} 

screebshot when button "1" and then "3" pressed

Antwort

1

Es wird nur zeigen, 100 und nicht 100300, weil Sie den Text überschreiben. Dazu müssen Sie den Text an Ihre textView anhängen. So Jedes Mal, während der Texteinstellung Sie wie folgt vor:

eresult.setText(eresult.getText().toString + "300"); 

zuerst den Text aus dem Textview bekommen und dann die neue anhängen. Für jede Taste müssen Sie dies tun.

Edit: Und um NullPointer Ausnahme zu vermeiden, überprüfen Sie jedes Mal, ob die TextView Null ist oder nicht. Grundsätzlich gilt:

if(eresult.getText()!=null){ 
    eresult.setText(eresult.getText().toString + "300"); 
} 
+0

bekommt nicht auch der Wert von 300 statt 3.i soll nur "300" anzeigen aber der Wert bleibt "3". Ich sage das, weil ich Taschenrechner mit meiner Landessprache mache. Wo der Wert gleich bleibt, aber etwas anderes zeigt. –

Verwandte Themen