2014-11-05 83 views
1

我對Java和android開發相當新。我在安卓應用程序中執行微調時遇到問題。微調器填充得很好,但是我無法將其轉換爲轉換變量的標籤,以便在微調器中索引更改時進行更改。從本質上講,我開始工作的類是selectOption()或public void onItemSelected(AdapterView parent,View view,int position,long id)class。麻煩實施微調

任何幫助非常感謝。

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 

} 
} 

回答

0

您需要將onItemSelectedListener設置爲您的微調器。 重寫偵聽器中的onItemSelected方法。

例如

option.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // if you have the spinner 
      String toastText = option.getSelectedItem().toString(); 
      // if you havent 
      String toastText = parent.getItemAtPosition(pos).toString(); 

     }); 

希望這能夠進一步爲您帶來。

+0

這會進入特定的班級嗎?感謝您的幫助:) – user3369965 2014-11-05 20:28:23

+0

當然,只需創建一個實現onItemSelectedListener接口的新類並覆蓋您的方法。 讓我們一起去 '類CustomListener實現OnItemSelectedListener { @覆蓋 公共無效onItemSelected(適配器視圖爲arg0,ARG1觀,詮釋ARG2,長ARG3){// 東西 }' 現在與您的活動微調只是打電話 'option.setOnItemSelectedListener(new CustomListener());' 對不起,錯誤,我現在沒有可能檢查正確性。 – Zuop 2014-11-05 20:35:07

+0

那麼,Prem是對的。我沒有滾動到右側看到你已經實現了OnItemSelectedListener接口。 – Zuop 2014-11-05 20:41:58

2

在你onCreate方法,該行之後addToSpinner();

添加這行代碼

option.setOnItemSelectedListener(this); 

它的工作。