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

Android 单击不同按钮时,如何在一个文本视图中按顺序添加文本?,android,button,textview,onclicklistener,Android,Button,Textview,Onclicklistener,我在安卓工作室遇到了一个问题。我有两个不同的按钮和一个文本视图。我想要的效果如下: 案例1:单击bt1时,文本视图中显示“A”。当点击bt2时,文本视图中添加了“G”,因此文本视图显示“AG” 案例2:点击bt1时,文本视图中显示“A”。再次单击bt1时,它将消失,文本视图为空 案例3:当案例1完成时,单击bt1时,“A”被删除,因此textView显示“G” 非常感谢您帮助我修改代码。提前谢谢 主要活动代码: public class keyboard extends AppCompatAc

我在安卓工作室遇到了一个问题。我有两个不同的按钮和一个文本视图。我想要的效果如下:

案例1:单击bt1时,文本视图中显示“A”。当点击bt2时,文本视图中添加了“G”,因此文本视图显示“AG”

案例2:点击bt1时,文本视图中显示“A”。再次单击bt1时,它将消失,文本视图为空

案例3:当案例1完成时,单击bt1时,“A”被删除,因此textView显示“G”

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

主要活动代码:

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个文本视图,每个按钮处理1个文本视图。

您可以这样做:

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个文本视图,每个按钮处理1个文本视图。

尝试在
文本视图中切换
A
G

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

尝试在
文本视图中切换
A
G

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=新的ArrayList()

ArrayList btn2list=新的ArrayList()

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

    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);
        }
    });}
公共类键盘
扩展AppCompative活动{
按钮btn1、btn2、btn3;
文本查看文本;
ArrayList btn1list=新的ArrayList();
ArrayList btn2list=新的ArrayList();
@凌驾
保护空隙
一次创建(捆绑)
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_键盘);
text=(TextView)findViewById(R.id.txt);
btn1=(按钮)findViewById(R.id.bt1);
btn2=(按钮)findViewById(R.id.bt2);
btn1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(“A”);
//检查btn1List大小(如果不为空),添加值并显示文本
如果(!bnt1List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});
btn2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(text.getText()+“G”);
//检查btn2List大小(如果不为空),添加值并显示文本
如果(!bnt2List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});}

我将在这里提到逻辑,这取决于您如何构建它并进一步即兴创作

  • 声明数组列表
ArrayList btn1list=新的ArrayList()

ArrayList btn2list=新的ArrayList()

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

    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);
        }
    });}
公共类键盘
扩展AppCompative活动{
按钮btn1、btn2、btn3;
文本查看文本;
ArrayList btn1list=新的ArrayList();
ArrayList btn2list=新的ArrayList();
@凌驾
保护空隙
一次创建(捆绑)
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_键盘);
text=(TextView)findViewById(R.id.txt);
btn1=(按钮)findViewById(R.id.bt1);
btn2=(按钮)findViewById(R.id.bt2);
btn1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(“A”);
//检查btn1List大小(如果不为空),添加值并显示文本
如果(!bnt1List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});
btn2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(text.getText()+“G”);
//检查btn2List大小(如果不为空),添加值并显示文本
如果(!bnt2List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});}

你应该尝试将每个按钮的值放入一个数组中,然后一个一个地读取。但是我对数组不太熟悉…你能帮我编辑代码,让我大致了解这个概念吗?谢谢你应该尝试将每个按钮的值放入一个数组中,然后一个一个地读取。但是我对arr不太熟悉嗯……你能帮我编辑一下代码,让我大致了解一下概念吗……多谢了,上面的实现只对一个字符有效。如果用户只对切换一个字符感到满意,你的方法很好杨柳,如果我想执行你给我看的相同任务,有没有办法缩短我的代码?因为我有我们有许多按钮来执行相同的任务……字母的顺序无关紧要,您可以将
onClick()
中的代码生成一个函数,如
updateText(String letter){}
。然后将所需的字母传递到此函数中。
updateText(“a”)
updateText(“G”)