2014-10-20 3 views
0

Мне просто нужно помощь со мной немного. Приложение работает отлично, но когда вы входите для ex. USD, 2 TO SEK результат 13,38. Но если я изменю сумму до 3, ничего не произойдет. Мне пришлось бы менять currencys туда и обратно, чтобы внести изменения. Я хочу, чтобы приложение изменило результат, как только я изменил значение. Пожалуйста, помогите! :)Необходимое обновление для валюты

package com.example.currencyconverter; 

import android.app.Activity; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
private String [] currency_name; 
private ArrayAdapter<String> adapter; 
private Spinner spin1, spin2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 



setUpTheSpinners(); 



} 
@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     return true; 
    } 


private void setUpTheSpinners() { 
currency_name = getResources().getStringArray(R.array.currency_name); 
adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, currency_name); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
OnItemSelectedListener listener = new CurrencySelectedListener(); 
spin1 = (Spinner)findViewById(R.id.spinner1); 
spin1.setAdapter(adapter); 
spin1.setOnItemSelectedListener(listener); 
spin2 = (Spinner)findViewById(R.id.spinner2); 
spin2.setAdapter(adapter); 
spin2.setOnItemSelectedListener(listener); 
} 


private void calculateSum() { 
String [] rates = getResources().getStringArray(R.array.currency_rate); 
int index1 = spin1.getSelectedItemPosition(); 
int index2 = spin2.getSelectedItemPosition(); 
double rate1 = Double.parseDouble(rates[index1]); 
double rate2 = Double.parseDouble(rates[index2]); 

EditText editAmount = (EditText) findViewById(R.id.editText1); 
if (!TextUtils.isEmpty(editAmount.getText().toString())) { 
    double amount = Double.valueOf(editAmount.getText().toString()); 

    double totalRate = amount * rate1/rate2; 
    TextView totalRateText = (TextView)findViewById(R.id.editText2); 
    totalRateText.setText("" + totalRate); 

    } 




} 

private class CurrencySelectedListener implements OnItemSelectedListener { 

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
calculateSum(); 
} 

public void onNothingSelected(AdapterView<?> parent) { 
} 
} 
} 

ответ

1

Ваше значение editAmount.getText().toString() является NULL (пусто). И вы все еще пытаетесь преобразовать это значение в DOUBLE, так что вы получили NumberFormatException.

Проверить значение EditText перед разбором, как:

if(!editAmount.getText().toString().equals("")) 
{ 
//Do your job 
} 

Или другой способ является

if (!TextUtils.isEmpty(editAmount.getText().toString())) { 
//Do your job 
} 
+0

'NULL' или' null' это нечто иное, чем ' ""' :) – nhaarman

+0

@NiekHaarman Ya. Отредактировано..thnx –

+0

Мне так жаль, но не понимаю. Не могли бы вы рассказать об –