这是我的第一个问题,所以我希望说清楚。
我有一个带有一些数字文本的textView,旁边有一个按钮,只有一个点击监听器,我想要的是当你点击按钮时,TextView的数值(> = 0)会减少一个。 这是我的代码的一部分:
TextView Counter = new TextView(this);
if (intSeries != 0)
Counter.setText(Integer.toString(intSeries));
else
Counter.setText("0");
Counter.setId(4);
tablaContador.addView(Counter,Tr);
Button Done = new Button(this);
Done.setText("-1");
if (intSeries != 0)
Done.setVisibility(View.VISIBLE);
else
Done.setVisibility(View.GONE);
Done.setId(6);
Done.setOnClickListener(this);
这是onClick功能(部分功能):
@Override
public void onClick(final View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case 6:{
TextView text = (TextView)findViewById(4);
int series = Integer.parseInt(text.getText().toString());
series--;
text.setText(series);
if (series==0){
Button boton = (Button)findViewById(6);
boton.setVisibility(View.GONE);
}
}
}
}
错误是当我尝试在onClick函数中创建setText时,我希望它可以修复或者可能会收到其他想法。 非常感谢你。
答案 0 :(得分:2)
我会避免对ID进行所有这些硬编码,而是使用资源。
致电
text.setText(series)
正在传递一个int。唯一有效的setText(int resId)重载需要与int值相关联的资源,即字符串资源。
将您的系列值转换为字符串。
类似的东西:
text.setText(Integer.toString(series));
答案 1 :(得分:0)
您应该将系列设置为整数。并根据需要增加/减少它。如果要更改按钮的文本,请将int
转换为String
。
而不是:
text.setText(series);
使用:
text.setText(String.valueOf(series));
答案 2 :(得分:0)
java中的变量名不能以大写字母开头。这是为类名保留的。
Counter -> counter
Done -> done
答案 3 :(得分:0)
我试过这个并且有效:
//Create onClickListener
OnClickListener pickChoice = new OnClickListener()
{
public void onClick(View v)
{
TextView txt = (TextView) findViewById(4);
int number = Integer.valueOf(txt.getText().toString());
txt.setText(String.valueOf(number -1));
}
};
//Create layout
LinearLayout lnLayout = new LinearLayout(this);
lnLayout.setOrientation(LinearLayout.VERTICAL);
TextView txt = new TextView(this);
txt.setId(4);
txt.setText("0");
lnLayout.addView(txt);
Button Done = new Button(this);
Done.setText("-1");
Done.setId(6);
Done.setOnClickListener(pickChoice);
lnLayout.addView(Done);
setContentView(lnLayout);
你在哪里创建按钮?一个活动?你将onClickListener传递给按钮的部分没有意义,也许按钮是一个错误的监听器,每次按下按钮都会出错?
代码应该易于理解,如果有什么需要我解释请问:)