条件按钮单击

时间:2017-05-18 16:22:23

标签: android performance android-studio

单击按钮时,它应显示一些文本。这很有效。每当超过按钮单击限制时,它必须显示一些用户定义的文本。单击按钮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();
        }}
});

2 个答案:

答案 0 :(得分:2)

问题是conClick方法的本地方法,因此每次点击都会从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))。

希望这会有所帮助〜