【问题标题】:Update Button text after Button click单击按钮后更新按钮文本
【发布时间】:2016-03-01 16:17:52
【问题描述】:

我想在点击后更新可点击按钮中的文本。

我有一个喜欢产品的按钮,它的文字显示产品有多少喜欢。

<Button
 android:id="@+id/like"
 android:text= "@string/like"
 android:drawableTop="@drawable/like"/>

&lt;string name="like"&gt;Likes: &lt;/string&gt;

因此,在此按钮的onClick() 方法中,我使用like.setText("Likes: " + product.getLikes()); 来更新文本:

Button like = (Button) v.findViewById(R.id.like);

like.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                like(product);
                like.setText("Likes: " + product.getLikes());
            }
        });

like() 方法确实有效 - 我检查过了。 product.getLikes() 方法返回正确的值。 但是按钮保持不变。我无法弄清楚问题是什么。

更新: 我注意到,一旦我向下滚动到其他项目并再次向上滚动,文本就会自行更新......

【问题讨论】:

  • 能否分享更多代码(比如你的 onClick 方法)
  • 您想要更新 TextView 并且您正在调用对按钮的引用。您的代码显示您的按钮名称是“like”并且您正在为该对象调用 setText() ?请发布整个代码以及您的文本视图的名称。
  • 而不是 "like.setText(...)" 使用这个:" ((Button)v).setText(...)" 这样你至少可以确保你正在更新点击查看。
  • 您可以尝试在同一行进行调试,除了 getLikes() 返回不正确的值或其他一些视图得到更新之外,我想不出其他原因(在这种情况下,请尝试使用变量 v 参数onClick() 设置文本)

标签: java android xml button


【解决方案1】:

试试这个。

final Button btn = (Button)findViewById(R.id.btn);
    final Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            btn.setText("new text");
        }
};


btn.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
     handler.sendEmptyMessage(0);
  }
});

【讨论】:

  • 我喜欢处理程序。但是请给我解释一下:如果我可以简单地关灯,为什么我必须去邮局并寄信到我自己家告诉读者(=我)关灯?或者在这种情况下:如果我的开关似乎坏了,写一条消息可以改善什么?
  • 处理程序适用于片段中的不同问题 - 非常感谢但是对于这个问题它没有做任何事情。但是我注意到当我再次向下和向上滚动时它会自行更新......
【解决方案2】:

试试这个:

String mlikes= product.getLikes().toString();
like.setText("Likes: " + mlikes);`

【讨论】:

  • 我已经试过了。问题是,当我第一次在我的应用程序中打开带有产品的片段时,它会显示它应该如何获得喜欢的数量,只有当我想通过单击按钮添加喜欢时,它才不会更新它。
  • 使用 TextView 代替 Button
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2022-12-04
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多