【问题标题】:Android: setText from button, where button text is given by stringAndroid:来自按钮的setText,其中按钮文本由字符串给出
【发布时间】:2015-02-19 22:48:47
【问题描述】:

我刚开始使用 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 部分

提前致谢!!!

【问题讨论】:

  • 那么在你的情况下发生了什么?
  • 这个问题并不是很清楚——无论你如何设置文本(硬编码与字符串资源),你获取/设置文本的方式都是一样的。究竟是什么问题?
  • 您必须使用字符串生成器或字符串缓冲区来附加字符串。

标签: java android string button settext


【解决方案1】:

您需要在 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                
         }
     });

【讨论】:

    【解决方案2】:

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

    String newText = disp.getText().toString() + bt.getText().toString();
    disp.setText(newText);
    isempty = newText.isEmpty();
    

    但我不确定为什么您之前的代码不正确。

    编辑(见 cmets)

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

    【讨论】:

    • newText 永远不会为空,因为每个按钮都有一个文本。
    • 为什么要为空?当您单击一个按钮时,您希望将 0、1、2、3、4、5、6、7、8 或 9 添加到现有字符串中。您不想添加空文本,对吗?我错过了什么吗?
    • 意味着isempty 始终保持false
    • 是的,除非您不点击任何按钮。我认为该变量正在跟踪您的 textview 是否为空。如果不是这样,我很抱歉。但是您要解决的问题是什么?
    • 哦,是的,对!让我们编辑它:)。 OP的问题真的是个问题吗^^?
    猜你喜欢
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多