0

Androidのスピナークラスと混乱しています。私がしたいのは、ユーザーが変換したいユニットを選択してから、2番目のスピナーで出力ユニットを選択するコンバーターを作成することです。Ex Spinner 1: Yard² から Spinner 2: Feet². 設定方法がわからないので、ヤード² とフィート² が​​選択されている場合は、この計算を行います。これが私がこれまでに持っているコードです:

         private void UnitBegin_ItemSelected (object sender, AdapterView.ItemSelectedEventArgs e)

        {
            Spinner UnitBegin = (Spinner)sender;
            string ubget = UnitBegin.SelectedItem.ToString();
            if (ubget == "Yard²")
            {
            }



        }
4

1 に答える 1

0

次のように、プライベート グローバル スピナーを宣言することで、これを実現できます。

private Spinner spinner1;
private Spinner spinner2;

    // your code
    // now just use the globally declared spinners (spinner1 and spinner2) in your code
    private void UnitBegin_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
    {
        string selected1 = spinner1.SelectedItem.ToString();
        string selected2 = spinner2.SelectedItem.ToString();

        if(selected1.Equals("Yard²"))
        {
            if (selected2.Equals("m²"))
            {
                //do calculation
            }
            else if (selected2.Equals("unit²"))
            {
                //do calculation
            }
            else if (selected2.Equals("otherunit²"))
            {
                //do calculation
            }
            else
            {
                //ERROR
            }
        }

        if (selected1.Equals("m²"))
        {
            if (selected2.Equals("Yard²"))
            {
                //do calculation
            }
            else if (selected2.Equals("unit²"))
            {
                //do calculation
            }
            else if (selected2.Equals("otherunit²"))
            {
                //do calculation
            }
            else
            {
                //ERROR
            }
        }
        //repeat for all the possible units

    }

しかし、次のようにすることをお勧めします。

private Spinner spinner1;
private Spinner spinner2;
private float unit1;
private float unit2;

    // your code
    // now just use the globally declared spinners (spinner1 and spinner2) in your code
    private void UnitBegin_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
    {
        string selected1 = spinner1.SelectedItem.ToString();

        if(selected1.Equals("Yard²"))
        {
            unit1 = 0.5 //let's say this is the multiplier from Yard² to m² :)
        }
        //repeat for all the possible units
    }

    private void UnitEnd_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
    {
        string selected2 = spinner2.SelectedItem.ToString();

        if(selected2.Equals("UNIT²"))
        {
            unit2 = 0.7 //let's say this is the multiplier from UNIT² to m² :)
        }
        //repeat for all the possible units
    }

そして、表示する結果を計算するメソッドでは:

float result = value*unit1; //and you get the value in the "default" unit
float finalResult = result*unit2; //and you get the value converted to the final unit

return finalResult; //return the final converted value
于 2012-12-12T14:04:50.613 に答える