2012-06-29 4 views
0

Я новичок, я пытаюсь построить калькулятор. У меня проблема.Сфера действия конечной переменной не видна OnClickListener

Я пишу ответ так:

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

Это в OnClickListenter. Проблема в том, что я должен общаться с двойными 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

не забудьте принять ответ. ok –

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

Если ваша проблема решена, так что не забудьте принять ответ. ОК –

Смежные вопросы