单击按钮后如何重复相同的文本?
How do I repeat the same text after clicking a button?
我想在 Android Studio 中制作一个简单的计算器,但在文本视图中重复相同的数字时遇到问题。
例如,如果我在计算器上按1,它会在上面显示数字1,但如果我再按一次,则没有任何反应。
因此,我无法生成大于 9 的数字。
这是我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.button0);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv = findViewById(R.id.textView);
tv.setVisibility(view.VISIBLE);
tv.setText("0");
}
});
btn = findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv = findViewById(R.id.textView);
tv.setVisibility(view.VISIBLE);
tv.setText("1");
}
});
}
}
使用 textViewObj.setText("1");
将始终替换视图中的现有文本。根据您对需求的描述,textViewObj.append("1");
应该是可以实现的。
将textViewObj.setText("1");
适当替换为textViewObj.append("1");
,如下
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv = findViewById(R.id.textView);
tv.setVisibility(view.VISIBLE);
tv.append("1");
}
});
btn 是您点击的按钮:
btn.setOnClickListener((view)->{
String currentNumber = txtViewObj.getText().toString();
String number = ((TextView)view).getText().toString(); //I assume that you already named each button corresponding to its number, for example button1 call it 1, button2 call it 2
txtViewObj.setText(currentNumber+number);
});
实际上,每次使用 textView.setText("1")
都会破坏包含任何文本的 TextView 缓冲区,并简单地用新文本替换它,即 "1"
并使用 textView.append("1")
将更新TextView 的缓冲区以显示连接的文本。有关更多详细信息,请参阅 this 答案。
我想在 Android Studio 中制作一个简单的计算器,但在文本视图中重复相同的数字时遇到问题。
例如,如果我在计算器上按1,它会在上面显示数字1,但如果我再按一次,则没有任何反应。
因此,我无法生成大于 9 的数字。
这是我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.button0);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv = findViewById(R.id.textView);
tv.setVisibility(view.VISIBLE);
tv.setText("0");
}
});
btn = findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv = findViewById(R.id.textView);
tv.setVisibility(view.VISIBLE);
tv.setText("1");
}
});
}
}
使用 textViewObj.setText("1");
将始终替换视图中的现有文本。根据您对需求的描述,textViewObj.append("1");
应该是可以实现的。
将textViewObj.setText("1");
适当替换为textViewObj.append("1");
,如下
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView tv = findViewById(R.id.textView);
tv.setVisibility(view.VISIBLE);
tv.append("1");
}
});
btn 是您点击的按钮:
btn.setOnClickListener((view)->{
String currentNumber = txtViewObj.getText().toString();
String number = ((TextView)view).getText().toString(); //I assume that you already named each button corresponding to its number, for example button1 call it 1, button2 call it 2
txtViewObj.setText(currentNumber+number);
});
实际上,每次使用 textView.setText("1")
都会破坏包含任何文本的 TextView 缓冲区,并简单地用新文本替换它,即 "1"
并使用 textView.append("1")
将更新TextView 的缓冲区以显示连接的文本。有关更多详细信息,请参阅 this 答案。