0

私は、それぞれが独自の変数をインクリメントする一連のボタンを含むページを作成しようとしています。初めてボタンをクリックすると、変数は問題なくインクリメントされます。ただし、2 回目は値が増加しません。問題の一部である可能性がある1 つの 内にすべてのリスナーが含まれていますonclicklistener handlerが、それが修正されない場合、またはより簡単な修正がある場合は、すべてのコードを書き直したくありません。コード:

final OnClickListener handler = new View.OnClickListener()
    {           
        public void onClick(View v)
        {
            Squad current = new Squad(BasketballGUIActivity.currentsquad);
            if (v == us2)
            {
                current.usTotal2++;
                us2.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us2);
                Log.e("ustotal2", ""+current.usTotal2);
                return;
            }
            if(v==us2made)
            {
                current.usTotal2made+=1;
                us2made.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us2made); 
            }
            if(v==them2)
            {
                current.themTotal2+=1;  
                them2.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them2);   
            }
            if(v==them2made)
            {
                current.themTotal2made+=1;
                them2made.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them2made);   
            }
            if(v==us1)
            {
                current.usTotal1+=1;
                us1.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us1); 
            }
            if(v==us1made)
            {
                current.usTotal1made+=1;
                us1made.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us1made); 
            }
            if(v==them1)
            {
                current.themTotal1+=1;
                them1.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them1);   
            }
            if(v==them1made)
            {
                current.themTotal1made+=1;
                them1made.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them1made);   
            }
            if(v==us0reb)
            {
                current.usTotalOreb+=1;
                us0reb.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us0reb);  
            }
            if(v==usxreb)
            {
                current.usTotalXreb+=1;
                usxreb.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(usxreb);  
            }
            if(v==them0reb)
            {
                current.themTotalOreb+=1;
                them0reb.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them0reb);    
            }
            if(v==themxreb)
            {
                current.themTotalXreb+=1;
                themxreb.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(themxreb);    
            }
            if(v==us3)
            {
                current.usTotal3+=1;
                us3.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us3); 
            }
            if(v==us3made)
            {
                current.usTotal3made+=1;
                us3made.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us3made); 
            }
            if(v==them3)
            {
                current.themTotal3+=1;
                them3.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them3);   
            }
            if(v==them3made)
            {
                current.themTotal3made+=1;
                them3made.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them3made);   
            }
            if(v==us2foul)
            {
                current.usTotal2foul+=1;
                us2foul.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us2foul); 
            }
            if(v==us2foulmade)
            {
                current.usTotal2foulmade+=1;
                us2foulmade.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us2foulmade); 
            }
            if(v==us3foul)
            {
                current.usTotal3foul+=1;
                us3foul.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us3foul); 
            }
            if(v==us3foulmade)
            {
                current.usTotal3foulmade+=1;
                us3foulmade.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(us3foulmade); 
            }
            if(v==usTO)
            {
                current.usTotalTO+=1;
                usTO.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(usTO);    
            }
            if(v==them2foul)
            {
                current.themTotal2foul+=1;
                them2foul.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them2foul);   
            }
            if(v==them2foulmade)
            {
                current.themTotal2foulmade+=1;
                them2foulmade.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them2foulmade);   
            }
            if(v==them3foul)
            {
                current.themTotal3foul+=1;
                them3foul.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them3foul);   
            }
            if(v==them3foulmade)
            {
                current.themTotal3foulmade+=1;
                them3foulmade.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(them3foulmade);   
            }
            if(v==themTO)
            {
                current.themTotalTO+=1;
                themTO.getBackground().setColorFilter(Color.parseColor("#00FF00"), PorterDuff.Mode.DARKEN);
                new ButtonColorTask().execute(themTO);  
            }
}

そして、スペースのために、はい、すべてのボタンをリスナーに初期化します(そうしないと、最初はインクリメントさえしません)。何がうまくいかないのか、これを修正する簡単な方法があるかどうか疑問に思っています。問題は、ボタンごとに個別のリスナーがないことにあると思いますが、よくわかりません。要約すると、問題は、ボタンをクリックすると、変数が 1 回インクリメントされますが、2 回以上インクリメントされることはありません。奇妙なことに、追加のボタンを押すたびに、実際にはButtonColorTask(一定時間後にボタンの色がデフォルトに戻るだけです) が実行され、さらに混乱します。どんな助けでも大歓迎です

4

2 に答える 2

1

現在の分隊を移動 = 新しい分隊 (BasketballGUIActivity.currentsquad); クラスメンバーレベルに。

final OnClickListener handler = new View.OnClickListener()
    {           
        public void onClick(View v)
        {
            Squad current = new Squad(BasketballGUIActivity.currentsquad);
------>
final OnClickListener handler = new View.OnClickListener()
    {   
        Squad current = new Squad(BasketballGUIActivity.currentsquad);        
        public void onClick(View v)
        {
于 2012-06-30T03:07:22.517 に答える
0

特定のボタンのクリックをチェックする方法が間違っています。次のようにする必要があります。

 if(v.getId() == R.id.BUTTONID) {

}

他のすべてのボタンについても同じことを行います。これで( から変数をcurrent取り出すとともにonClick())問題が解決すると思います。

于 2012-06-30T04:04:38.643 に答える