2013-04-06 36 views
0

我有一個問題,我無法弄清楚如何解決。我的代碼如下:使用變量進行Android微調計算

package com.app.BoomBase; 

import android.app.Activity; 
import android.app.LauncherActivity.ListItem; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class Distance extends Activity implements OnItemSelectedListener { 
    Button Calc; 
    Spinner spType, spForce, spWeight; 
    double FarstCatch, TrickCatch, MTA, LongDistance ; 
    String[] types = { "Farst Catch", "Trick Catch", "MTA" , "Long Distance" }; 
    EditText etWeight; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.distance); 
     super.onCreate(savedInstanceState); 
     FarstCatch = 100; 
     TrickCatch = 43.56; 
     MTA = 32.60 ; 
     LongDistance = 25; 

     ArrayAdapter<String> AdapterT = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, types); 
     spType = (Spinner) findViewById(R.id.spType); 
     AdapterT.setDropDownViewResource(android.R.layout.simple_spinner_item); 
     spType.setAdapter(AdapterT); 
     spType.setPrompt("Select Type"); 
     spType.setOnItemSelectedListener(this); 
     Button Calc = (Button) findViewById(R.id.button1); 


     Calc.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       String selected = spType.getSelectedItem().toString(); 
       Toast.makeText(getApplicationContext(), "Your Boomerang will apoximately fly this far:" + selected, Toast.LENGTH_LONG).show(); 

      } 
     }); 
     } 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 
     // TODO Auto-generated method stub 
     int position = spType.getSelectedItemPosition(); 
     switch (position){ 
     case 0: 
      double FarstCatch; 
      break; 
     case 1: 
      double TrickCatch; 
      break; 
     case 2: 
      double MTA; 
      break; 
     case 3: 
      double LongDistance; 
      break; 
     } 
     } 

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

    } 
} 

我想利用對應於來自用戶的輸入(spType)的公司名片情況下,變量,然後利用它來進行計算。例如:如果用戶選擇了FarstCatch,我想取數字100並在計算中使用它:R = m/FarstCatch。

我該怎麼做?

編輯: 新代碼:

package com.app.BoomBase; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class Distance extends Activity implements OnItemSelectedListener { 
    Button Calc; 
    Spinner spType, spForce, spWeight; 
    double FarstCatch, TrickCatch, MTA, LongDistance, r ; 
    String[] types = { "Farst Catch", "Trick Catch", "MTA" , "Long Distance" }; 
    double[] values = {100, 43.56, 32.6, 25}; 
    EditText etWeight; 
    int etNum; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.distance); 
     super.onCreate(savedInstanceState); 
     FarstCatch = 100; 
     TrickCatch = 43.56; 
     MTA = 32.60 ; 
     LongDistance = 25; 


     ArrayAdapter<String> AdapterT = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, types); 
     spType = (Spinner) findViewById(R.id.spType); 
     AdapterT.setDropDownViewResource(android.R.layout.simple_spinner_item); 
     spType.setAdapter(AdapterT); 
     spType.setPrompt("Select Type"); 
     spType.setOnItemSelectedListener(this); 
     etWeight = (EditText) findViewById(R.id.etWeight); 
     Button Calc = (Button) findViewById(R.id.button1); 

     Calc.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       String etValue = etWeight.getText().toString(); 
       etNum = Integer.parseInt(etValue); 
       Toast.makeText(getApplicationContext(), "Your Boomerang will apoximately fly this far:" + r , Toast.LENGTH_LONG).show(); 

      } 
     }); 
    } 

    public void onItemSelected1(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      // value corresponds to the selected spType 
      double value = values[arg2]; 

      r = etNum/value; 
} 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 
     // TODO Auto-generated method stub 
     int position = spType.getSelectedItemPosition(); 
     switch (position){ 
     case 0: 
      double FarstCatch; 
      break; 
     case 1: 
      double TrickCatch; 
      break; 
     case 2: 
      double MTA; 
      break; 
     case 3: 
      double LongDistance; 
      break; 
     } 
} 

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

    } 
} 

但它仍然沒有工作..怎麼能這樣呢?

回答

1

爲與數組類型對應的值創建另一個數組。

double[] values = {100, 43.56, 32.6, 25}; 

接下來,實施onItemSelected()如下 -

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // value corresponds to the selected spType 
    double value = values[arg2]; 

    // Do your calculation 
    //double R = m/value; 
} 

注意:Arg2爲選定的項目位置,因此需要使用getSelectedItem()

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 

示例代碼:

public class Distance extends Activity implements OnItemSelectedListener { 
    Button Calc; 
    Spinner spType, spForce, spWeight; 
    double selectedValue, r; 
    String[] types = { "Farst Catch", "Trick Catch", "MTA" , "Long Distance" }; 
    double[] values = {100, 43.56, 32.6, 25}; 
    EditText etWeight; 
    int etNum; 


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

     ArrayAdapter<String> AdapterT = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, types); 
     spType = (Spinner) findViewById(R.id.spType); 
     AdapterT.setDropDownViewResource(android.R.layout.simple_spinner_item); 
     spType.setAdapter(AdapterT); 
     spType.setPrompt("Select Type"); 
     spType.setOnItemSelectedListener(this); 
     etWeight = (EditText) findViewById(R.id.etWeight); 
     Button Calc = (Button) findViewById(R.id.button1); 

     Calc.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       String etValue = etWeight.getText().toString(); 
       etNum = Integer.parseInt(etValue); 
       r = etNum/selectedValue; 
       Toast.makeText(getApplicationContext(), "Your Boomerang will apoximately fly this far:" + r , Toast.LENGTH_LONG).show(); 

      } 
     }); 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      // value corresponds to the selected spType 
      selectedValue = values[arg2]; 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
    } 
} 
+0

我不是很追隨...? – Lasse 2013-04-06 18:26:28

+1

好的..所以你想根據用戶輸入(spType)做一些計算。你的代碼很好,所以當用戶在微調器中選擇一個特定的項目(spType)時,onItemSelected()將會被調用,並且所選項目的位置被作爲arg2傳遞。現在這個位置對應於類型數組..對嗎?所以使用相同的位置從我在答案中顯示的值數組中獲取值(例如100)。 – appsroxcom 2013-04-06 18:31:26

+0

我現在已經嘗試了你的建議,但是我得到了一個結果:0.0無論我做什麼......爲什麼? – Lasse 2013-04-06 19:49:32