java - 使 TextView 的按钮更改值

标签 java android variables button textview

所以,我的 friend 今天让我在 android studio 中搞乱 android 编程。我开始制作一个初学者应用程序并取得了一些不错的效果。但现在我正在尝试获取一个按钮来更改 TextView 的值。

这是按钮和 TextView 的代码

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add one"
        android:id="@+id/button3"
        android:layout_alignBottom="@+id/button2"
        android:layout_alignRight="@+id/textView"
        android:layout_toRightOf="@+id/button"
        android:onClick="addone"/>

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:id="@+id/counter"
        android:textSize="40dp"
        android:layout_alignTop="@+id/button3"
        android:layout_centerHorizontal="true"/>

这是试图更改 TextView 值的代码。
public void addone(){

    numtest+=1;
    TextView t = (TextView) findViewById(R.id.counter);
    t.setText(numtest);

}

该程序编译并打开,但每当我按下按钮时它就会崩溃。我相信我已经将罪魁祸首缩小到这条线,但我不确定为什么它不起作用
TextView t = (TextView) findViewById(R.id.counter);

有任何想法吗?

最佳答案

重载方法是您的问题。这是微妙的,即使是经验丰富的程序员也可能犯的错误。我以前自己做过。

您调用TextView.setText(Integer) .这会尝试加载资源 id 为 numtest 的字符串,但该字符串不存在。

试试这个:

public void addone(View v){
    numtest+=1;
    TextView t = (TextView) findViewById(R.id.counter);
    t.setText(numtest+"");
}

这将调用 TextView.setText(CharSequence)相反,这才是你真正想要做的。

此外,正如 Osmium USA 所展示的,您的方法签名不正确。按下按钮的回调方法必须接受一个 View ,并且必须是公共(public)的。

关于java - 使 TextView 的按钮更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958887/

相关文章:

java - 我有一个使用 http 和 https 协议(protocol)的 JMS - ActiveMQ

java - 如何从一行整数中删除前导/尾随空格?

android - 检查屏幕位置改变了多少appium android

java - 如何在获取整个JSON数据源的同时获取某个标签

c# - asp.net 在回发之间保留列表值

javascript - 我可以在鼠标悬停时获取元素的类并将其用于变量吗?

java - 运行时异常是@ApplicationException(rollback=false) 但事务最终回滚

java - 查找ArrayList的索引

android - 在给定坐标的特定范围内查找项目

string - Python连接一个字符串和一个变量