【问题标题】:How do I repeat the same text after clicking a button?单击按钮后如何重复相同的文本?
【发布时间】:2018-07-10 00:32:23
【问题描述】:

我正在尝试在 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");
            }
        });
    }
}

【问题讨论】:

  • 将您的代码添加为文本而不是代码截图

标签: android android-studio calculator


【解决方案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");
        }
    });

【讨论】:

  • 感谢您的回复。您认为您可以举个例子,因为我对此仍然有些困惑吗?
  • @RayaanAfzal 没问题。请记住将答案标记为已接受,以便其他人也可以受益。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    实际上发生的情况是,每次使用textView.setText("1") 都会破坏包含任何文本的TextView 的缓冲区,并简单地将其替换为新文本,即"1",使用textView.append("1") 将更新TextView 的缓冲区以显示串联文本。更多详情请参考this答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多