2017-02-07 3 views
0

が割り当てられている場合があります私は声明Javaエラー値がすでに

ため
Value k might already been assigned to 
でのk ++のコンパイラエラーを取得するリスナー

 public void setListeners() { 
    final int k ; 
    for (k=0; k<6; k++) { 
     mNumberView[k].addTextChangedListener(new TextWatcher() { 
      @Override 

      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       mSprintHrs[k] = calcSprint(0, s); 
       String mSH = String.format("%.1f", mSprintHrs[k]); 
       mSprintView[k].setText(mSH); 
       calcTotal(); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

の配列を設定するには、以下のコードを使用したいです

回避策はありますか?

+2

「最終」にしないでください。 – shmosel

+0

コンパイラは内側ループのkを最終的に望みます(mSprintHrs [k]) – Tori

答えて

1

エラーは、final変数を変更しようとしているためです。あなたは匿名のサブクラス内で変更可能な変数にアクセスする必要がある場合は、final変数にコピーする必要があります:

for (int i=0; i<6; i++) { 
    final int k = i; 

おそらくクリーナー回避策はfinalで別の方法にループ本体を抽出することになりますパラメータ。

+0

ありがとう。それは動作します。 – Tori

関連する問題