所以,我的 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/