получить выбор пользователя и преобразовать его в строку [Android] - PullRequest
2 голосов
/ 05 мая 2010

Я только что получил Droid, и, поработав некоторое время, я почувствовал, что хочу создать программу для него. Программа, которую я пытаюсь создать, рассчитывает фактическую емкость хранилища вторичных носителей. Пользователь выбирает из списка единиц измерения в диапазоне от КБ до 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);
  }

}

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Вы должны использовать метод equals, если хотите сравнить объекты по значению. object1 == object2 имеет значение true, если object1 и object2 относятся к одному и тому же объекту.

if (unit.equals("KB"))

или даже лучше:

if ("KB".equals(unit))

чтобы избежать исключения NullPointerException в случае, если unit оказалось пустым

1 голос
/ 07 июня 2012

Я схожу с ума, просто пытаясь найти самый простой способ получить выбранное значение из счетчика и преобразовать его в строку. Вот единственный способ, которым я мог это сделать.

final Spinner spinObj = (Spinner) findViewById(R.id.spin_genre);
  TextView selection = (TextView)spinObj.getSelectedView();
      CharSequence strGenre = selection.getText();
...