Я хочу, чтобы видимая кнопка удалила текст из TextView - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу, чтобы видимая кнопка удалила текст из TextView

Я делаю ввод с клавиатуры в текстовом представлении У меня есть 4 кнопки b1, b2, b3, backspace. когда я нажимаю b1, набираю текстовое представление «A» и b1 невидим

, затем, когда я нажимаю кнопку возврата, удаляется последний символ, но не появляется последняя кнопка, которая нажала

мой проект

https://youtu.be/_pLEUevM8aA

Java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {


        //my buttons
    Button b1,b2,b3,backspace;
        //my text view


    TextView txt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        txt = (TextView)findViewById(R.id.txt);
        b1 = (Button)findViewById(R.id.b1);
        b2 = (Button)findViewById(R.id.b2);
        b3 = (Button)findViewById(R.id.b3);
        backspace = (Button)findViewById(R.id.backspace);


        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        backspace.setOnClickListener(this);

        }

      //on clike listener    

    @Override
    public void onClick(View view) {

        switch (view.getId()){

              //b1 on click
            case R.id.b1:

                txt.setText(txt.getText().toString() + b1.getText());
                b1.setVisibility(View.INVISIBLE);

                break;

                  //b2 on click
            case R.id.b2:
                txt.setText(txt.getText().toString() + b2.getText());
                b2.setVisibility(View.INVISIBLE);

                break;

                     //b3 on click
            case R.id.b3:
                txt.setText(txt.getText().toString() + b3.getText());
                b3.setVisibility(View.INVISIBLE);

                break;

                //here is my problem last char has deleted button of that char must be get visible

                   //backspace on click
            case R.id.backspace:

                //I want visible button has removed it text from TextView
                //appear last button has clicked


               txt.setText(txt.getText().toString().substring(0,txt.getText().toString().length()-1));


                break;
        }//end switch 

    }                   //I hope get answer in this website
}
                    //thank for ALL helping

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Вы можете создать Stack нажатых кнопок, чтобы вы знали, в каком порядке они нажимаются:

public class MainActivity extends ... implements ...{
    Stack<View> pressedButtons = new Stack<>();
    ...
    @Override
    public void onClick(View view) {
        // If it is a number, not a backspace key - remember that we pressed it
        if(view.getId() != R.id.backspace) {  
            pressedButtons.push(view);
            txt.setText(txt.getText().toString() + ((Button) view).getText());
            view.setVisibility(View.INVISIBLE);
        }
        else {  // backspace key
            String text = txt.getText().toString();
            if(text.isEmpty())
                return;  // do this to prevent crash
            txt.setText(text.substring(0, text.length() - 1));
            // make the button visible again
            View lastPressedButton = pressedButtons.pop();
            lastPressedButton.setVisibility(View.VISIBLE);
        }
    }                
}
0 голосов
/ 07 ноября 2019

Вы можете попробовать это:

    case R.id.backspace:

    //try like this
    if(string.substring(string.length() - 1).equals(b3.getText())) 
       b3.setVisibility(View.VISIBLE);
    ...

txt.setText(txt.getText().toString().substring(0,txt.getText().toString().length()-1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...