java - Android:从按钮设置文本,其中按钮文本由字符串给出

标签 java android string button settext

我刚刚开始使用 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());
      }
}

为了将文本写入屏幕。

是的,我知道它有很多工作要做。请问有人可以阐明如何从字符串追加/设置文本吗? (即如何修改disp.append/disp.setText部分

提前致谢!!!

最佳答案

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

该文件应具有以下格式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello!</string>
</resources>

现在要访问该字符串,请在代码中执行以下操作:

String string = getString(R.string.hello);

现在您可以将该字符串设置为按钮。

接下来,在您的代码中,您必须将单击监听器设置为计算器中的按钮,在这种情况下,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                
         }
     });

关于java - Android:从按钮设置文本,其中按钮文本由字符串给出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618529/

相关文章:

java - 获取一个重复操作的按钮

java - 为什么用某些编译器编译的程序可以被反编译而其他的(实际上)不能?

java - 使用循环将数据添加到 HashMap

java - Android 中 SparseArrayCompat 政策不断增长背后的基本原理是什么?

android - Android-设置Google Play服务和Firebase-Gradle构建错误

android - 将收到的消息写入 SMS 提供商(API 级别 19+)

c# - 将 String.Empty 发送到存储过程

java - 从 Java 调用继承的类方法

java - 用于从数学/代数表达式中匹配和提取变量的正则表达式模式

java - java中的字符串操作