java - 实现微调器时遇到问题

标签 java android eclipse spinner

我是 Java 和 Android 开发的新手。我在 android 应用程序中实现微调器时遇到问题。微调器填充得很好,但是当微调器中的索引发生变化时,我无法将其添加到转换变量的标签中以进行更改。本质上,我无法开始工作的类是 selectOption() 或 public void onItemSelected(AdapterView parent, View view, int position, long id) 类。

非常感谢任何帮助。

package com.example.conversion;
import java.util.ArrayList;
import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.TextView.OnEditorActionListener;


public class MainActivity extends ActionBarActivity implements OnEditorActionListener, AdapterView.OnItemSelectedListener{

//Graphical Variables
private Spinner option;
private TextView inputTextView;
private TextView outputTextView;
private EditText conversionInput;
private TextView conversionOutput;

//Conversions
private float 
        milesToKil = 1.6093f,
        kilToMiles = 0.6214f,
        inchToCent = 2.54f,
        centToInch = 0.3937f;

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

    //get IDs
    option = (Spinner) findViewById(R.id.option);
    inputTextView = (TextView) findViewById(R.id.inputTextView);
    outputTextView = (TextView) findViewById(R.id.outputTextView);
    conversionInput = (EditText) findViewById(R.id.conversionInput);
    conversionOutput = (TextView) findViewById(R.id.conversionOutput);
    conversionInput.setOnEditorActionListener(this);

    //Add values to spinner
    addToSpinner();
    //selectOption();

    display("");
}

//Spinner
public void addToSpinner() {

    option = (Spinner) findViewById(R.id.option);
    List<String> list1 = new ArrayList<String>();
    list1.add("Miles To Kilometers");
    list1.add("Kilometers To Miles");
    list1.add("Inches To Centimeters");
    list1.add("Centimeters to Inches");
    ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>(this,
    android.R.layout.simple_spinner_item, list1);
    dataAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    option.setAdapter(dataAdapter1); 
}

/*public void selectOption()
{
    int position;

    position = option.getSelectedItemPosition();
    String cAmountString = conversionInput.getText().toString();
    float temp = Float.parseFloat(cAmountString);

    if(position == 0)
    {
        inputTextView.setText("Miles");
        outputTextView.setText("Kilometers");
        convertMilesToKilometers(temp);
    }
    else if(position == 1)
    {
        inputTextView.setText("Kilometers");
        outputTextView.setText("Miles");
        convertKilometersToMiles(temp);
    }
    else if(position == 2)
    {
        inputTextView.setText("Inches");
        outputTextView.setText("Centimeters");
        //convertInchesToCentimeters(cAmountString);
    }
    else if(position == 3)
    {
        inputTextView.setText("Centimeters");
        outputTextView.setText("Inches");
        //convertCentimetersToInches(cAmountString);
    }

}*/



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}



public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
    display("");
    return false;
}


@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {
    TextView myText = (TextView) view;
    Toast.makeText(this, "You selected " + myText.getText() + " ", Toast.LENGTH_LONG).show();

    String cAmountString = conversionInput.getText().toString();
    float temp = Float.parseFloat(cAmountString);

    if(position == 0)
    {
        inputTextView.setText("Miles");
        outputTextView.setText("Kilometers");
        convertMilesToKilometers(temp);
    }
    else if(position == 1)
    {
        inputTextView.setText("Kilometers");
        outputTextView.setText("Miles");
        convertKilometersToMiles(temp);
    }
    else if(position == 2)
    {
        inputTextView.setText("Inches");
        outputTextView.setText("Centimeters");
        //convertInchesToCentimeters(cAmountString);
    }
    else if(position == 3)
    {
        inputTextView.setText("Centimeters");
        outputTextView.setText("Inches");
        //convertCentimetersToInches(cAmountString);
    }

}

 public void display(String displayText)
    {       
        if(displayText.equals(""))
        {
            conversionOutput.setText("0.0");
        }
        else
        {
            conversionOutput.setText(displayText);
        }
    }

private void convertMilesToKilometers(float cAmount) {

    float total;
    total = cAmount * milesToKil;
    String temp2 = total + "";
    display(temp2);     
}

private void convertKilometersToMiles(float cAmount) {

    float total;
    total = cAmount * kilToMiles;
    String temp2 = total + "";
    display(temp2);     
}

private void convertInchesToCentimeters(String cAmount) {

    float temp;
    float total;
    temp = Float.parseFloat(cAmount);
    total = temp * inchToCent;
    String temp2 = total + "";
    display(temp2);
}

private void convertCentimetersToInches(String cAmount) {

    float temp;
    float total;
    temp = Float.parseFloat(cAmount);
    total = temp * centToInch;
    String temp2 = total + "";
    display(temp2);
}

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

}
}

最佳答案

在您的 oncreate 方法中,在 addToSpinner(); 行之后

添加这行代码

option.setOnItemSelectedListener(this);

它会起作用。

关于java - 实现微调器时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26765798/

相关文章:

java - 如何创建填充并返回现有或新集合的通用方法?

android studio 没有链接到缺少的资源

java - 使用 include 标签时键盘下一个按钮

android - 是否有适用于 AT&T Samsung Galaxy 的特殊安卓版本? PhoneStateListner 不工作。

java - 是否可以使用 IDE JPA 向导从实体生成表?或者我应该努力手动完成所有事情?

java - 如何在 Mac 上从 Java 输出重音字符?

java - OSGi 读取配置

java - Spring data jpa + 连接2个表

java - OSGi REST 服务不工作(bnd 工具)

c++ - Eclipse 索引器不工作