单击按钮时,它应显示一些文本。这很有效。每当超过按钮单击限制时,它必须显示一些用户定义的文本。单击按钮3次后,它显示的是一些不是用户定义的文本。这是我的OnClickListener代码:
final Button btnca =(Button) findViewById(R.id.btnca);
btnca.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int c=1;
if(c <= 3) //if button click for first three times
{
new FancyShowCaseView.Builder(Playing.this)
.title(questionPlay.get(index).getCorrectAnswer())
.build()
.show();
score -= 10;
txtScore.setText(String.format("%d", score));
c++;
}
if(c>3) //if button click for after three times
{
new FancyShowCaseView.Builder(Playing.this)
.title("Your Limit Exceed")
.build()
.show();
}}
});
答案 0 :(得分:2)
问题是c
是onClick
方法的本地方法,因此每次点击都会从1开始。尝试将其移至班级
final Button btnca =(Button) findViewById(R.id.btnca);
btnca.setOnClickListener(new View.OnClickListener() {
int c=1; //initialize here so it's re-used in each onClick
@Override
public void onClick(View v) {
if(c <= 3) //if button click for first three times
{
new FancyShowCaseView.Builder(Playing.this)
.title(questionPlay.get(index).getCorrectAnswer())
.build()
.show();
score -= 10;
txtScore.setText(String.format("%d", score));
c++;
}
if(c>3) //if button click for after three times
{
new FancyShowCaseView.Builder(Playing.this)
.title("Your Limit Exceed")
.build()
.show();
}}
});
编辑:我应该提到这不是一个完整的解决方案。我假设此代码位于Activity(or Fragment).onCreate()
。重新创建生命周期组件时,计数器将重置配置更改,但我会将该解决方案作为练习留给读者:)
答案 1 :(得分:1)
您应该在c
方法之外初始化计数器变量onClick()
。当然,您应该将其初始化为c = 0
而不是c = 1
,以便在4th
点击后获得祝酒。
试试这个:
final Button btnca =(Button) findViewById(R.id.btnca);
btnca.setOnClickListener(new View.OnClickListener() {
int c = 0;
@Override
public void onClick(View v) {
if(c <= 3) //if button click for first three times
{
new FancyShowCaseView.Builder(Playing.this)
.title(questionPlay.get(index).getCorrectAnswer())
.build()
.show();
score -= 10;
txtScore.setText(String.format("%d", score));
c++;
}
if(c>3) //if button click for after three times
{
new FancyShowCaseView.Builder(Playing.this)
.title("Your Limit Exceed")
.build()
.show();
// Reset if required
//c = 0;
}}
});
仅供参考,如果您想重置变量c
,请在条件c = 0
内重置(if(c>3)
)。
希望这会有所帮助〜