单击不同的按钮时,如何在一个文本视图中按顺序添加文本?

How do I add text in sequence in one text view when different buttons are clicked?

我在 Android Studio 中遇到问题。我有两个不同的按钮和一个 textView。我想要的效果如下:

CASE 1: When bt1 is clicked, "A" is displayed in textView. When the bt2 is clicked, "G" is added in textView so the textView displays "AG".

CASE 2: When bt1 is clicked, "A" is displayed in textView. When bt1 is clicked again, it disappears and the textView is empty.

CASE 3: When CASE 1 is done, as bt1 is clicked, "A" is removed so that textView displays"G".

非常感谢您帮助我修改代码。提前致谢!!

主要Activity代码:

public class keyboard 
extends AppCompatActivity {

Button btn1,btn2,btn3;
TextView text;

@Override
protected void 
onCreate(Bundle 
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
text=(TextView)findViewById(R.id.txt);
btn1=(Button)findViewById(R.id.bt1);
btn2=(Button)findViewById(R.id.bt2);

btn1.setOnClickListener(new View.OnClickListener(){
    @Override

    public void onClick(View v){
        text.setText("A");
        text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
    }
});

btn2.setOnClickListener(new View.OnClickListener(){
    @Override

    public void onClick(View v){
        text.setText(text.getText() + "G");
        text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
    }
});}

你可以这样做:

public class keyboard extends AppCompatActivity {

    Button btn1,btn2,btn3;
    TextView text;

    boolean isBtn1Clicked,isBtn2Clicked;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_keyboard);
         text=(TextView)findViewById(R.id.txt);
         btn1=(Button)findViewById(R.id.bt1);
         btn2=(Button)findViewById(R.id.bt2);
         isBtn1Clicked = false;
         isBtn2Clicked = false;

         btn1.setOnClickListener(new View.OnClickListener(){
           @Override
           public void onClick(View v){
               if(!isBtn1Clicked){
                   text.setText("A");
               } else{
                   //remove 'A' from your TextView
               }

               //check your TextView
               if(text.getText().isEmpty()){
                   text.setVisibility.(View.INVISIBLE);
               }else {
                   text.setVisibility.(View.VISIBLE);
               }
           }});

         btn2.setOnClickListener(new View.OnClickListener(){
           @Override
           public void onClick(View v){
               //same as btn1
         }});
}

我更喜欢这样做:使用 2 个 TextView,每个按钮处理 1 个 TextView。

试试这个来切换 TextView 中的 AG:

btn1.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        String curText = text.getText().toString();
        if (curText.contains("A")) {
            text.setText(curText.replace("A", ""));
        } else {
            text.setText("A" + curText);
        }
    }
});

btn2.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        String curText = text.getText().toString();
        if (curText.contains("G")) {
            text.setText(curText.replace("G", ""));
        } else {
            text.setText(curText + "G");
        }
    }
});}

我会在这里提到逻辑,你可以构建它并进一步改进它

  • 声明一个数组列表

ArrayList btn1list = new ArrayList();

ArrayList btn2list = new ArrayList();

  • btn1.setOnClickListener 仅当您的列表为空时才将文本添加到列表 btn1mylist.add(mystring) (!btn1list.size())
  • btn2.setOnClickListener 仅当您的列表为空时才将文本添加到列表 btn2mylist.add(mystring) (!btn2list.size())
  • 设置读取数组值的文本视图

示例代码:

    public class keyboard 
    extends AppCompatActivity {

    Button btn1,btn2,btn3;
    TextView text;
    ArrayList<String> btn1list = new ArrayList<String>();
    ArrayList<String> btn2list = new ArrayList<String>();

    @Override
    protected void 
    onCreate(Bundle 
    savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_keyboard);
    text=(TextView)findViewById(R.id.txt);
    btn1=(Button)findViewById(R.id.bt1);
    btn2=(Button)findViewById(R.id.bt2);

    btn1.setOnClickListener(new View.OnClickListener(){
        @Override

        public void onClick(View v){
          //  text.setText("A");
          //Check for the btn1List size if it is not empty add the value and show the text
    if(!bnt1List.size()){
       // get the array list of items and set text 
}
            text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
        }
    });

    btn2.setOnClickListener(new View.OnClickListener(){
        @Override

        public void onClick(View v){
        //    text.setText(text.getText() + "G");
  //Check for the btn2List size if it is not empty add the value and show the text
    if(!bnt2List.size()){
       // get the array list of items and set text 
}
            text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
        }
    });}