2

我刚拿到一个Droid,用了一段时间后,我觉得我想为它做一个程序。我正在尝试制作的程序计算辅助存储介质的实际存储容量。用户从范围从 KB 到 YB 的单位列表中进行选择,输入的大小将根据所选单位放入公式中。但是,该程序存在一些问题。根据我的测试,我将其范围缩小到用户的选择并没有真正从微调器中获得。我查找的所有内容似乎都指向了一种与 J2SE 中的工作方式非常相似的方法,但它什么也没做。我实际上应该如何获取这些数据?

这是该应用程序的 Java 源代码:

package com.Actual.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;
public class ActualStorageActivity extends Activity
{

 Spinner selection; /* declare variable, in order to control spinner (ComboBox) */
 ArrayAdapter adapter; /* declare an array adapter object, in order for spinner to work */
 EditText size; /* declare variable to control textfield */
 EditText result; /* declare variable to control textfield */
 Button calculate; /* declare variable to control button */
 Storage capacity = new Storage(); /* import custom class for formulas */

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); // load content from XML

 selection = (Spinner)findViewById(R.id.spinner);
 adapter = ArrayAdapter.createFromResource(this, R.array.choices_array, android.R.layout.simple_spinner_dropdown_item);
 size = (EditText)findViewById(R.id.size);
 result = (EditText)findViewById(R.id.result);
 calculate = (Button)findViewById(R.id.submit);

 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); /* set resource for dropdown */

 selection.setAdapter(adapter); // attach adapter to spinner

 result.setEnabled(false); // make read-only
 result.setText("usable storage");

 }

 public void calcAction(View view) {
   String initial = size.getText().toString();
   String unit = selection.getSelectedItem().toString();
   String end = "Nothing";
   double convert = Double.parseDouble(initial);
   capacity.setStorage(convert);

   if (unit == "KB")
   {
    end = Double.toString(capacity.getKB());
   }

   else if (unit == "MB")
   {
    end = Double.toString(capacity.getMB());

   }

   else if (unit == "GB")
   {
    end = Double.toString(capacity.getGB());

   }

   else if (unit == "TB")
   {
    end = Double.toString(capacity.getTB());

   }

   else if (unit == "PB")
   {
    end = Double.toString(capacity.getPB());

   }

   else if (unit == "EB")
   {
    end = Double.toString(capacity.getEB());

   }

   else if (unit == "ZB")
   {
    end = Double.toString(capacity.getZB());

   }

   else if (unit == "YB")
   {
    end = Double.toString(capacity.getYB());

   }

   else;

   result.setText(end);
  }

}
4

2 回答 2

2

equals当您想按值比较对象时,您应该使用该方法。object1 == object2如果object1object2引用同一个对象,则为真。

if (unit.equals("KB"))

甚至更好:

if ("KB".equals(unit))

避免发生 NullPointerException 以防万一unit为空

于 2010-05-05T19:31:23.780 回答
1

我一直在努力寻找从微调器中获取所选值并将其转换为字符串的最基本方法。这是我能做到的唯一方法。

final Spinner spinObj = (Spinner) findViewById(R.id.spin_genre);
  TextView selection = (TextView)spinObj.getSelectedView();
      CharSequence strGenre = selection.getText();
于 2012-06-06T23:24:36.747 回答