Java Android:setText from button,其中按钮文本由字符串给出

Java Android:setText from button,其中按钮文本由字符串给出,java,android,string,button,settext,Java,Android,String,Button,Settext,我刚开始学习android和java,是的,我正在同时学习这两个。作为发展技能的基本项目,我一直在尝试为计算器编写代码 键盘是由按钮组成的,我选择通过使用我读过的字符串将文本放在这些按钮上。在硬编码文本上使用字符串是一种很好的做法。 然后,当按钮被“点击”时,它们会像计算器一样附加/设置TypeView项的文本 字符串的使用给我带来了问题 如果我对按钮上的文本进行硬编码,我可以使用: //this part for initial reading as 0 and for disp usage

我刚开始学习android和java,是的,我正在同时学习这两个。作为发展技能的基本项目,我一直在尝试为计算器编写代码

键盘是由按钮组成的,我选择通过使用我读过的字符串将文本放在这些按钮上。在硬编码文本上使用字符串是一种很好的做法。 然后,当按钮被“点击”时,它们会像计算器一样附加/设置TypeView项的文本

字符串的使用给我带来了问题

如果我对按钮上的文本进行硬编码,我可以使用:

//this part for initial reading as 0 and for disp usage later
TextView disp;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calculator);
    disp=(TextView)findViewById(R.id.textView);
    disp.setText("0");
}

public boolean onCreateOptionsMenu(Menu menu) {}
static boolean isempty=(true);
public void onClick(View btn)
{
    Button bt = (Button)btn;
    if (disp.getText().length()>7) return;
    if (isempty)
      {
        disp.setText(bt.getText());
        isempty=false;
      }
    else
      {
         disp.append(bt.getText());
      }
}
以便将文本写入屏幕

是的,我知道有很多工作要做。有人能解释一下如何从字符串中追加/设置文本吗?ie如何修改disp.append/disp.setText部分


提前感谢

我将删除if/else语句并添加

String newText = disp.getText().toString() + bt.getText().toString();
disp.setText(newText);
isempty = newText.isEmpty();
但是我不知道为什么你以前的代码不好

编辑并查看注释

disp.append(bt.getText());
isempty = true;

您需要在res/values中创建一个名为string.xml的文件

该文件应具有以下格式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello!</string>
</resources>
现在您可以将该字符串设置为按钮

接下来,在代码中,您必须将click listener设置为计算器中的按钮,在这种情况下,TextView不应处理任何事件。每个按钮的事件声明如下:

     btn01.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             Button btn = (Button) v;
             disp.append(btn.getText());
         }
     });
     btnAdd.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // handle the adding                
         }
     });
在用于添加、删除等的运算符按钮上,您需要事件侦听器如下所示:

     btn01.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             Button btn = (Button) v;
             disp.append(btn.getText());
         }
     });
     btnAdd.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // handle the adding                
         }
     });

那么在您的情况下会发生什么呢?问题并不十分清楚-无论您如何设置文本硬编码与字符串资源,获取get/setText的方式都是相同的。到底是什么问题?您必须使用字符串生成器或字符串缓冲区来追加字符串。newText永远不能为空,因为每个按钮都有一个文本。为什么它应该为空?当您单击按钮时,您希望将0、1、2、3、4、5、6、7、8或9添加到现有字符串中。您不想添加空文本,对吗?我错过了什么吗?意味着isempty始终为false。是的,除非你没有点击任何按钮。我以为变量正在跟踪textview是否为空。如果不是这样,我很抱歉。但你想解决的问题是什么?哦,是的,对了!。让我们编辑一下:。OP的问题真的是个问题吗?