【问题标题】:Multiply EditText value with Spinner将 EditText 值与 Spinner 相乘
【发布时间】:2017-03-19 05:28:29
【问题描述】:

我目前正在为学校做一个货币转换器项目。 我有一个包含货币(美元、欧元等)的数组和一个包含值(6.54、9.56 等)的数组。

我有两个微调器和一个 EditText,您在一个微调器中选择 From 单元,在另一个微调器中选择 To 单元。然后它应该考虑editText中的数量并在textView中显示“实时”结果。如果您更改微调器或 editText,则 textview 中的值应直接更新。

假设在editText中插入的值为10.0,我们要将其从美元转换为欧元,计算如下:10.0*6.54/9.56=

但我不知道如何将editText添加到计算中,现在它只将spinner1中的值添加到spinner2中的值。

这里是strings.mxl

<resources>
<string name="app_name">CurrencyConverter3</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">Dinner Time</string>
<string name="textView1Text">From:</string>
<string name="textView2Text">To:</string>
<string name="textView3Text">Amount:</string>
<string name="textView4Text">Amount:</string>
<string-array name="currency">
    <item >Choose currency</item>
    <item >AUD</item>
    <item >USD</item>
    <item >SEK</item>
    <item >EUR</item>
    <item >YEN</item>
</string-array>
<string-array name="price">
    <item >0</item>
    <item >6.91</item>
    <item >6.54</item>
    <item >1.00</item>
    <item >9.56</item>
    <item >0.0837</item>
</string-array>

这里是 mainactivity.java

package com.example.xxx.currencyconverter;

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

public class MainActivity extends Activity {
    private String [] currency;
    private ArrayAdapter<String> adapter;
    private Spinner spin1, spin2;
    private EditText amount;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setUpTheSpinners();

    }


    private void setUpTheSpinners() {
        currency = getResources().getStringArray(R.array.currency);
        adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, currency);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        AdapterView.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 [] price = getResources().getStringArray(R.array.price);
        int index1 = spin1.getSelectedItemPosition();
        int index2 = spin2.getSelectedItemPosition();
        double cost1 = Double.parseDouble( price[index1] );
        double cost2 = Double.parseDouble( price[index2] );
        double totalCost = cost1 + cost2;
        TextView totalCostText = (TextView)findViewById(R.id.textView5);
        totalCostText.setText("" + totalCost);
    }



private class currencySelectedListener implements AdapterView.OnItemSelectedListener {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        calculateSum();

    }

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

谢谢

【问题讨论】:

    标签: android android-edittext spinner converter


    【解决方案1】:
    1. 使用“edittext.getText().toString()”获取当前编辑文本值
    2. 将字符串解析为双精度
    3. 乘以货币汇率
    4. 将输出解析为字符串
    5. 将编辑文本值设置为您从第 4 步获得的输出

      private void convert() {
          String [] price = getResources().getStringArray(R.array.price);
          int index = spinner.getSelectedItemPosition();
          double curr_ratio = Double.parseDouble(price[index] );
      
          EditText et_value = (EditText)findViewById(R.id.edit_text);
          double value = Double.parseDouble(et_value.getText().toString());
          et_value.setText(String.valuOf(value*curr_ratio));
      }
      

    【讨论】:

    • 您好,感谢您的回复,但仍然无法正常工作。当我使用该解决方案时,应用程序崩溃
    • 很难预料没有你在这里发布错误日志
    • 似乎它返回一个空字符串。也许有人可以解释更多细节。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2016-06-13
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2017-04-27
    • 2017-07-17
    相关资源
    最近更新 更多