0

解決方法がわからないという問題があります。私のコードは次のとおりです。

    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

    }
}

しかし、それはまだ動作しません..これはどうしてですか?

4

1 に答える 1

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) {
    }
}
于 2013-04-06T18:05:36.977 に答える