1

わかりましたので、特定のスペースの面積を計算するアクティビティを作成しようとしています。

ユーザーが「m」または「ft」のいずれかで寸法を入力できるようにしたい。答えは最後にメートルで与えられる必要があります。

さて、問題に。

以下のコードは機能します。問題は、num1 と num2 の両方が、最後に使用されたスピナーで選択されたものと等しいとプログラムが想定していることです。したがって、num1 に 100 フィートを入力してから num2 に 10m を入力すると、最後に m 単位を選択したため、1000m という答えが得られます。それは92.9の答えを与えるべきです...

ここ数日、頭が痛い…。

誰でも私を助けることができます!?!

よろしくお願いします

private OnClickListener myClickListener = new OnClickListener()
{
    public void onClick(View v) {
        try{

        a=Double.parseDouble(num1.getText().toString());
        b=Double.parseDouble(num2.getText().toString());}
        catch(Exception e)
        {
            if(num1.getText().length()==0)
            {
                num1.setError("please input width");
            }
            if(num2.getText().length()==0)
            {
                num2.setError("please input length");
            }

        }

        if (opselected=="ft" && opselected1=="ft")
        {c=((a * 0.0929) * (b * 0.0929));tv1.setText(Double.toString(c));}
        else if (opselected=="m" && opselected1=="m")
        {c=( a * b);tv1.setText(Double.toString(c));}
        else if (opselected=="m" && opselected1=="ft")
        {c= (a * (b * 0.0929));tv1.setText(Double.toString(c));}
        else if (opselected=="ft" && opselected1=="m")
        {c= ((a * 0.0929) * b);tv1.setText(Double.toString(c));}



        else {tv1.setText("select units");}
        //tv1 = (TextView)findViewById(R.id.TextView01);


    }
};
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.car);

       tv1 = (TextView)findViewById(R.id.TextView01);


       button01 = (Button)findViewById(R.id.Button01);
       button01.setText("Display Air Volume");
       button01.setOnClickListener(myClickListener);



       num1 = (EditText)findViewById(R.id.EditText01);
       num2 = (EditText)findViewById(R.id.EditText02);



       spinOps = (Spinner)findViewById(R.id.Spinner01);
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(
         this, android.R.layout.simple_spinner_item, ops);
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinOps.setAdapter(adapter);
       spinOps.setOnItemSelectedListener(this);

       spinOps1 = (Spinner)findViewById(R.id.Spinner02);
       ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
         this, android.R.layout.simple_spinner_item, ops1);
       adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinOps1.setAdapter(adapter);
       spinOps1.setOnItemSelectedListener(this);

    }   
    public void onItemSelected (AdapterView<?> p,View v,int position,long id) {
        opselected=ops[position];
        opselected1=ops1[position];
        tv1.setText("");
    }
    public void onNothingSelected(AdapterView<?> p) { 
        tv1.setText(""); 
    }
4

2 に答える 2

0

onItemSelected()では、v.getId()を使用して、R.id.Spinner01またはR.id.Spinner02のどちらで呼び出されたかを確認し、opselectedまたはopselected1のいずれか(両方ではない)を更新できます。例えば:

public void onItemSelected (AdapterView<?> p,View v,int position,long id) {
    if (v.getId() == R.id.Spinner01)
        opselected=ops[position];
    else if (v.getId() == R.id.Spinner02)
        opselected1=ops1[position];
    tv1.setText("");
}
于 2012-07-01T15:45:54.310 に答える
0

各スピナーに独自のリスナーを与えます。たとえば、あなたが持っている場所

  spinOps.setOnItemSelectedListener(this);

それを次のようなものに置き換えます。

  spinOps.setOnItemSelectedListener(new onItemSelectedListener() {
      public void onItemSelected(AdapterView<?> p, View v, int position, long id) {
         // get the value entered and the unit selected (e.g., val0, unit0)
      }
  });

同じことを行い (val1 と unit1 を使用することを除いて、それは spinOps1 になります....)、単位が異なる場合は、一方を選択し、他方を一致するように変換します。つまり、ユーザーが 1 番目に 39 インチ、2 番目に 2 メートルを選択し、メートルで表示したい場合、39 インチ = 1 メートルなので、結果は 3 メートルになります。

詳細については、 http://developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.htmlを参照してください。(onItemSelectedListener を検索して、最初の結果を取得するだけです....)

その後、 -- ジム

PS: はい、わかっています。フィートの代わりにインチを使用しました ... シンプルにしています :-)

于 2012-07-02T02:39:54.987 に答える