2013-06-16 2 views
0

У меня есть программа для Android, которая конвертирует валюты. Проблема в том, что валюты не конвертируются. Вот мой код.Конвертер валют не работает в Android

package com.example.currencyconverter; 

import java.text.DecimalFormat; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity 
          implements OnClickListener, 
          OnItemSelectedListener{ 

    EditText edittextdollars; 
    EditText edittexteuros; 
    TextView dollars; 
    TextView euros; 
    RadioButton dtoe; 
    RadioButton etod; 
    RadioGroup radiogroup; 
    Spinner spinner1; 
    Spinner spinner2; 
    Button calculate; 

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

    private void addListenerOnButton() { 
     spinner1 = (Spinner) findViewById(R.id.spinner1); 
     spinner2 = (Spinner) findViewById(R.id.spinner2); 
     calculate = (Button) findViewById(R.id.calculate); 
    } 
    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) {  
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
    } 


    @Override 
    public void onClick(View v) { 
     String text = spinner1.getSelectedItem().toString().trim(); 
     String text2 = spinner2.getSelectedItem().toString().trim(); 
     if (text.equalsIgnoreCase("Dollar") && text2.equalsIgnoreCase("Euro")) { 
      convertDollarstoEuros(); 
     } 
     Toast.makeText(MainActivity.this, 
      "OnClickListener : " + 
      "\nSpinner 1 : "+ String.valueOf(spinner1.getSelectedItem()) + 
      "\nSpinner 2 : "+ String.valueOf(spinner2.getSelectedItem()), 
     Toast.LENGTH_SHORT).show(); 
    } 

    public void convertDollarstoEuros() { 

     double val = Double.parseDouble(edittextdollars.getText().toString()); 
     DecimalFormat df = new DecimalFormat("###.##"); 
     edittexteuros.setText(df.format(val*0.77)); 
     } 

    protected void convertEurostoDollars() { 
     double val = Double.parseDouble(edittexteuros.getText().toString()); 
     DecimalFormat df = new DecimalFormat("###.##"); 
     edittextdollars.setText(df.format(val*1.3)); 

     } 

    protected void convertEurostoEuros() { 
     double val = Double.parseDouble(edittexteuros.getText().toString()); 
     DecimalFormat df = new DecimalFormat("###.##"); 
     edittextdollars.setText(df.format(val*1)); 
    } 

    protected void convertDollarstoDollars() { 
     double val = Double.parseDouble(edittextdollars.getText().toString()); 
     DecimalFormat df = new DecimalFormat("###.##"); 
     edittexteuros.setText(df.format(val*1)); 
    } 

} 

Тост часть работает, но конвертация валюты не является (посмотрите на функцию onClick). У меня есть два прядильщика. Либо тост просто показывает, либо когда я нажимаю вычисление, приложение рушится.

+0

Когда вопрос закрыт как слишком локализованный, это означает, что этот вопрос настолько специфичен для вашей индивидуальной проблемы, что он не полезен для других людей. Пример «локализованный вопрос» заключается в следующем: «Привет, Рогодуд, есть ли теперь красная машина за окном?». Как бы вы ответили на этот вопрос? Был ли автомобиль когда-либо там? Это движется? О каком окне я говорю? Вопрос настолько узкий, что он спамает сайт, а кто-то еще, кто приземляется на этом сайте, усугубляется тем, что они не могут найти то, что им нужно. Поэтому постарайтесь сделать вопросы более общими. –

+0

Хорошо, извините, это был мой первый вопрос о SO. С тех пор я многому научился, и теперь я знаю, как написать вопрос о SO. Кроме того, как мой вопрос получает такое внимание через 6 месяцев? – Rohodude

+0

Я видел ваше последнее сообщение о добавлении целых чисел в список. Я возвращаюсь вовремя, чтобы убедиться, что вы не рассылаете спам с бесполезными артефактами. Если вы хотите узнать больше о том, что нужно, чтобы стать модератором, вы можете записать эти подкасты на CD и послушать их: https://soundcloud.com/stack-exchange/ Это основатели этого сайта, Джефф и Джоэл, и они дают советы элиты о том, как получить репутацию быстрее всех и как работать на пути к статусу модератора. И множество советов о том, как быть программистом, который мог бы построить этот сайт. –

ответ

2

edittexteuros, похоже, не был инициализирован.

В вашем onCreate() убедитесь, что вы инициализируете его так:

edittexteuros = (EditText) findViewById(R.id.name_of_your_edit_text_id_in_xml); 

В противном случае, когда вы пытаетесь setText на нем в convertDollarstoEuros() вы получите NullPointerException.

То же самое касается всех ваших других элементов, конечно. Вы сделали это для spinner1, spinner2 и calculate, но все остальные не были настроены.

+0

Спасибо, я постараюсь сделать то, что ты сказал. – Rohodude

+0

Все ли в порядке? – Rohodude

+0

Спасибо вам большое. Это сработало!!! – Rohodude

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