单击不同的按钮时,如何在一个文本视图中按顺序添加文本?
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
中的 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 = 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);
}
});}
我在 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
中的 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 = 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);
}
});}