2013-10-03 3 views
-1

Я изменил свою деятельность для форматирования вывода EditText с использованием специального метода, называемого round, но когда я вызываю метод по установлению результатов к EditTexts я получаю ошибку: The method setText(CharSequence) in the type TextView is not applicable for the arguments (double) .I собрали из того, что есть проблема с добавлением дополнительного параметра 2 при использовании settext, но я не уверен, как еще вывести результаты. Мой вопрос в том, как в этом случае я буду выводить результаты при использовании этой функции round?Ошибка форматирования EditText вывод

public class CalcResult extends MainActivity 
{ 
    EditText result1,result2; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.result); 
     result1 = (EditText)findViewById(R.id.mark1); 
     result2 = (EditText)findViewById(R.id.mark2); 


     Intent intent = getIntent(); 
     double mark1 = intent.getDoubleExtra("number1", 0); 
     double mark2 = intent.getDoubleExtra("number2", 0); 


     //set the variables on EditTexts like this : 
     result1 = (EditText)findViewById(R.id.mark1); 
     result2 = (EditText)findViewById(R.id.mark2); 

     result1.setText(round(mark1,2)); 
     result2.setText(round(mark2,2)); 
    } 

    public static double round(double value, int places) { 
     if (places < 0) 
      throw new IllegalArgumentException(); 

     BigDecimal bd = new BigDecimal(value); 
     bd = bd.setScale(places, BigDecimal.ROUND_HALF_UP); 
     return bd.doubleValue(); 
    } 


} 
+0

использование 'String.valueOf (двойной)' – Raghunandan

+0

В каком контексте я бы использовать 'String.valueOf (дважды)'? @Raghunandan – user2815899

ответ

1

The method setText(CharSequence) in the type TextView is not applicable for the arguments (double)

Использование

double r1 = round(mark1,2); 
result1.setText(String.valueOf(r1)); 
double r2 = round(mark2,2); 
result1.setText(String.valueOf(r2)); 

setText(CharSequence) принимает CharSequence как парам, а у вас есть round(mark1,2) возвращение в два раза.

ява документы

public static String valueOf(double d) 
Returns the string representation of the double argument. 
The representation is exactly the one returned by the Double.toString method of one argument. 

Parameters: 
d - a double. 
Returns: 
a string representation of the double argument. 
See Also: 
Double.toString(double) 
+0

Я пробовал это, но я получаю следующую ошибку 'Метод ValueOf (double) не определен для типа String'. Любая идея, что здесь делать? – user2815899

+0

@ user2815899 как вы использовали то же самое, что и этот 'String.valueOf (round (mark1,2)'? – Raghunandan

+0

Да, я использовал его так: 'result1.setText (String.valueOf (round (mark1,2));' но получая эту ошибку – user2815899

1

Использование:

result1.setText(String.ValueOf(round(mark1,2))); 
result2.setText(String.ValueOf(round(mark2,2))); 
1
// try this 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.result); 
     result1 = (EditText)findViewById(R.id.mark1); 
     result2 = (EditText)findViewById(R.id.mark2); 

     Intent intent = getIntent(); 
     double mark1 = intent.getDoubleExtra("number1", 0); 
     double mark2 = intent.getDoubleExtra("number2", 0); 

     result1.setText(round(mark1,2)); 
     result2.setText(round(mark2,2)); 
    } 

    public static String round(double value, int places) { 
     if (places < 0) 
      throw new IllegalArgumentException(); 

     BigDecimal bd = new BigDecimal(value); 
     bd = bd.setScale(places, BigDecimal.ROUND_HALF_UP); 
     return String.valueOf(bd.doubleValue()); 
    } 
Смежные вопросы