2012-06-29 44 views
0

我是初學者,我正在嘗試構建計算器。 我有一個問題。最終變量的範圍對OnClickListener不可見

我寫這樣的答案:

ans += Double.parseDouble(etResult.getText().toString()); 
outTest.setText("The answer is " + ans); 

這是在OnClickListenter。 問題是,我必須與我在項目開始時定義的double ans進行交流,如果我想與雙人交流,我需要他是最終的,但如果他是最終的,我不能改變他在OnClickListener。

任何人都可以幫助我,告訴我我該怎麼做?謝謝。

+3

發佈更多的代碼,但你可能可以答你的階級和他們的成員變量修改值而不必聲明爲最終的。 – tjg184

+0

聲明雙變量以上onCreate方法 –

回答

3

使用常用技巧:代替double ans = 0聲明final double[] ans = {0},然後您將能夠在處理程序代碼中使用ans[0] += ...

0

您可以寫詩代碼如下

public class TestActivity extends Activity { 
/** Called when the activity is first created. */ 
Double dbl; 
Button btn; 
EditText et; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    btn = (Button) findViewById(R.id.button1); 
    et = (EditText) findViewById(R.id.editText1); 
    btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      dbl = Double.parseDouble(et.getText().toString()); 
      Log.e("double", "" + dbl); 
     } 
    }); 
} 

}

+0

不要忘記接受答案。好的 –

0

試試吧

public class TestActivity extends Activity { 
/** Called when the activity is first created. */ 
Double dbl; 
Button btn; 
EditText et1, et2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    btn = (Button) findViewById(R.id.button1); 
    et1 = (EditText) findViewById(R.id.editText1); 
    et2 = (EditText) findViewById(R.id.editText2); 
    btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      dbl = Double.parseDouble(et1.getText().toString()); 
      et2.setText(dbl.toString()); 
     } 
    }); 
} 
} 
+0

如果你的問題解決了,那麼別忘了接受答案。好 –