每当用户点击一个按钮时,我想增加一个int变量的值,但是现在这个值只增加一次。
这是我用来增加变量p
的值。
@Override
public void onClick(View v) {
int p = 1;
if (p == 9) {
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
} else {
p = p + 1;
holder.textViewQuantity.setText("" + p);
}
}
答案 0 :(得分:4)
当p
位于方法内部时,它是局部变量,并且是每个方法调用的唯一值,每次都初始化为1
。
将它移动到类,它变成实例变量(AKA字段),并保持其最新值为类实例的生命周期。
阅读this doc on the 4 types of variables了解详情。
private int p = 1; //moved
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(p == 9) {
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
return ;
}
else {
p = p+1;
holder.textViewQuantity.setText(""+p);
}
答案 1 :(得分:0)
变量p
应该是类成员:
int p = 1;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(p == 9) {
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
return ;
}
else {
p = p+1;
holder.textViewQuantity.setText(""+p);
}
答案 2 :(得分:0)
将其声明为全局变量。让它对整个班级可见(我假设你不是一次又一次地声明对象)。目前,变量的范围仅限于函数,并且每次事件发生时此变量的值都为1.
每当调用此事件时,您的值p都被赋值为1。
class YourClass{
int p; /// creating p
YourClass(){
p = 1; /// initializing the value in constructor;
}
// your onClick Event Code;
@Override
public void onClick(View v) {
if(p == 9) {
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
return ;
}
else {
p = p+1;
holder.textViewQuantity.setText(""+p);
}
}
答案 3 :(得分:0)
将int p = 1移出函数,你将p重置为1 onclick。
答案 4 :(得分:0)
您的代码应如下所示:
private int p = 1;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(p == 9) {
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
return ;
}
else {
p = p+1;
holder.textViewQuantity.setText(""+p);
}
}
int p应该是一个类成员。
答案 5 :(得分:0)
您可以将变量设为静态,然后计算给定类的所有按钮:
class Button {
public static int p = 0;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(p == 9) {
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
return ;
}
else {
p = p+1;
holder.textViewQuantity.setText(""+p);
}
}
答案 6 :(得分:0)
private int p = 0;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
p+=1;
if(p<9)
holder.textViewQuantity.setText(String.valueof(p));
else
Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
}