Android 需要多次生成work setText和getText

Android 需要多次生成work setText和getText,android,Android,我一直在尝试构建一个计算器,比如当我点击按钮“1”时,它会在文本视图上显示“100”,但在计算中它会得到值“1”。当按下按钮“2”时为“200”。单击按钮时,我将gettext()和settText()分开。第一次单击按钮时,它工作正常。但当我按下另一个按钮时,一切都不起作用。例如,如果我按按钮“1”,然后按“3”,它应该得到值“13”,并将文本设置为“100300”。但它并没有这样做。当按下按钮“1”时,它只显示“100”,无论我在第一次按下按钮多少次。它停止setText()和getText

我一直在尝试构建一个计算器,比如当我点击按钮“1”时,它会在文本视图上显示“100”,但在计算中它会得到值“1”。当按下按钮“2”时为“200”。单击按钮时,我将gettext()和settText()分开。第一次单击按钮时,它工作正常。但当我按下另一个按钮时,一切都不起作用。例如,如果我按按钮“1”,然后按“3”,它应该得到值“13”,并将文本设置为“100300”。但它并没有这样做。当按下按钮“1”时,它只显示“100”,无论我在第一次按下按钮多少次。它停止setText()和getText() {1=১,2=২,3=৩,4=৪,5=৫,6=৬,7=৭,8=৮,9=৯} 这是我的代码示例

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);
}  

它只显示100而不是100300,因为您正在覆盖文本。为此,您必须将文本附加到文本视图中。因此,每次设置文本时,请执行以下操作:

eresult.setText(eresult.getText().toString + "300");
首先从文本视图中获取文本,然后附加新的文本。对于每个按钮,您都必须这样做

编辑:为了避免空指针异常,每次检查textView是否为空。基本上:

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

这不是也得到了300的值吗?而不是3。我只想显示“300”,但值仍然是“3”。我这么说是因为我用我的国家语言制作计算器。其中值保持不变,但它显示其他内容。