简体   繁体   English

如何在Android中使用微调器?

[英]How to use spinners in android?

I am new to android. 我是Android新手。 I am trying to make simple unit converter. 我正在尝试制作简单的单位转换器。 The layout contains EditText for input, two spinners (to and from), an ImageButton and EditText to display answer. 该布局包含用于输入的EditText,两个微调器(往返),一个ImageButton和一个用于显示答案的EditText。 I want to add values to spinners and when these values are selected i want to perform action. 我想为微调器添加值,选择这些值后,我想执行操作。

My xml code: 我的xml代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" 
tools:context=".BitsBytes" >

<Spinner
    android:id="@+id/SpinnerFrom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView2"
    android:layout_alignRight="@+id/inputvalue"
    android:layout_below="@+id/textView2"
    android:entries="@array/bitsbytesfrom"
    android:prompt="@string/from_prompt" />

<Spinner
    android:id="@+id/SpinnerTo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView3"
    android:layout_alignRight="@+id/SpinnerFrom"
    android:layout_below="@+id/textView3"
    android:entries="@array/bitsbytesto"
    android:prompt="@string/to_prompt" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/SpinnerFrom"
    android:layout_below="@+id/SpinnerFrom"
    android:layout_marginTop="16dp"
    android:text="To:"
    android:textColor="#000000"
    android:textSize="20dp" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="16dp"
    android:gravity="center"
    android:text="Value: "
    android:textSize="20dp" />

<EditText
    android:id="@+id/inputvalue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView6"
    android:layout_alignBottom="@+id/textView6"
    android:layout_toRightOf="@+id/textView6"
    android:ems="10"
    android:hint="Enter value"
    android:inputType="numberDecimal" >

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView6"
    android:layout_below="@+id/inputvalue"
    android:layout_marginTop="16dp"
    android:text="From:"
    android:textColor="#000000"
    android:textSize="20sp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="19dp"
    android:text="Bits/Bytes Conversion"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="25dp" />

<ImageButton
    android:id="@+id/convertButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/SpinnerTo"
    android:layout_centerHorizontal="true"
    android:background="#00000000"
    android:src="@drawable/btnconvert" 
    android:clickable="true"/>

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/answer"
    android:layout_centerHorizontal="true"
    android:text="Answer"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
    android:id="@+id/answer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="28dp"
    android:ems="10"
    android:inputType="numberDecimal" />

</RelativeLayout>

My java code: 我的Java代码:

package com.easy.convert;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.TextView;

public class BitsBytes extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bitsbytes);

    ImageButton ib = (ImageButton) findViewById(R.id.convertButton);
    ib.setOnClickListener(new View.OnClickListener() {

                EditText etValue = (EditText) findViewById(R.id.inputvalue);
                Spinner spBitsBytesFrom = (Spinner) findViewById(R.id.SpinnerFrom);
                Spinner spBitsBytesTo = (Spinner) findViewById(R.id.SpinnerTo);
                String txtFromSpinner = spBitsBytesFrom.getSelectedItem().toString();
                String txtToSpinner = spBitsBytesTo.getSelectedItem().toString();
                TextView Answer = (TextView) findViewById(R.id.answer);

                public void onClick(View v)
                {

                    if (txtFromSpinner.equals("Bits") && txtToSpinner.equals("Bytes"))
                    {
                        Double value = Double.parseDouble(etValue.getText().toString());
                        Double answer = (double) 0;
                        answer = value/8;
                        String stringAnswer = Double.toString(answer);
                        Answer.setText(stringAnswer);
                    }

                }
            });

}
}

I am filling the spinners using string array. 我正在使用字符串数组填充微调框。 I am not able to figure out whats wrong in my code because there is no error in logcat. 我无法找出代码中的错误,因为logcat中没有错误。

Change this, 改变这个

 (txtFromSpinner.equals("Bits") && txtToSpinner.equals("Bytes"))

to

if((txtFromSpinner.getSelectedItem().toString().equals("Bits")) && (txtToSpinner.getSelectedItem().toString().equals("Bytes")))

this will get the text from the item selected in the spinner. 这将从微调器中选择的项目中获取文本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM