如何在计算器中编程 2 个功能 C 按钮?

How to program 2 function C button in calculator?

我是 Android Studio 的初学者,我想在 calc 中制作一个具有 2 个功能的 C 按钮。 我该怎么做才能在点击 C 按钮时仅删除一个数字,然后按住删除 TextView 中的所有数字?

 findViewById(R.id.btnClear).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            txtScreen.setText("");  // Clear the screen
            // Reset all the states and flags
            lastNumeric = false;
            stateError = false;
            lastDot = false;

您是否查看了 onClick()onLongPress() 方法?

cancelButton.setOnLongClickListener(new OnLongClickListener() { 
        @Override
        public boolean onLongClick(View v) {
            myTextView.setText("");
            return true;
        }
    });

 button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            removeOneCharacter();
        }
 });

private void removeOneCharacter()
{
    String textViewValue = myTextView.getText().toString();
    if (textViewValue != null && textViewValue.length >= 2)
    {
        myTextView.setText(textViewValue.substring(0, textViewValue.length() - 2);
    }
}

onClick() 方法一次从 TextView 中删除 char。然而,onClick() 方法从 TextView 中删除了整个 String,但仅考虑是否已经存在 2 个或更多字符以防止 Exception 由于上限而发生的子串。

这里的一个改进可能是添加另一个 if 函数来检查长按中的字符长度,如果只剩下一个字符则执行清除。

您可以通过设置onClickListener 和onLongClickListener 来实现。

cButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String currentText = textView.getText().toString();
            if(currentText.length >= 2){
                currentText = currentText.substring(0, currentText.length - 2);
            }else{
                currentText = "";
            } 
            textView.setText(currentText);
        }
 }); 



cButton.setOnLongClickListener(new View.OnLongClickListener() { 
        @Override
        public boolean onLongClick(View v) {
            textView.setText("");
            return true;
        }
 });