2013-04-02 66 views
0
public void updateDisplay(View v) 
{ 
    Button button = (Button) findViewById(R.id.button1); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      tempNumber.setText(tempNumber.getText().toString() + ((Button) view).getText()); 
     } 
    }); 

    tempNumber.setText(tempNumber.getText().toString() + ((Button) v).getText()); 
} 


    <Button 
     android:id="@+id/button1" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:onClick="updateDisplay" 
     android:text="1" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:onClick="updateDisplay" 
     android:text="2" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button3" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:onClick="updateDisplay" 
     android:text="3" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button4" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:onClick="updateDisplay" 
     android:text="4" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button5" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="5" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button6" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="6" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button7" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:padding="0sp" 
     android:text="7" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button8" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="8" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button9" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="9" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/button0" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="0" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/buttonDot" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="." 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

    <Button 
     android:id="@+id/buttonM" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:onClick="updateDisplay" 
     android:layout_weight="0.1" 
     android:background="@drawable/button" 
     android:text="-" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:textColor="@drawable/button_tx_color" 
     android:textSize="15sp" /> 

我有小小的和平代码,更新并创建按钮单击数字。 一切工作正常,但我想做一些浮点和负数的验证。Android浮点数和负数验证

错误: 12.343.325.4

正确: 12.343(第二点不能被写入)

错误 12-324-45

正确 -1234

tempNumber是一个TextView,我显示结果,没有更多。

+0

看一看的NumberFormat:http://developer.android.com/reference/java/text/NumberFormat.html - 您可以设置区域设置你的电话号码的风格出现,当你解析一个数字时,你会得到结果,如果出现问题,则返回null。 – SEngstrom

回答

1

我不知道我是否理解你在问什么,因为它似乎像在onClick方法中添加更多的代码一样简单,以防止错误的值。例如:

new View.OnClickListener() { 

    private boolean dotPresent; 

    public void onClick(View view) { 
     String buttonText = ((Button)view).getText().toString(); 
     boolean isDot = buttonText.equals("."); 
     boolean isSign = buttonText.equals("-"); 
     int currentLength = tempNumber.getText().length(); 

     if (isSign && currentLength != 0) return; 
     if (isDot && dotPresent) return; 

     tempNumber.setText(tempNumber.getText().toString() + buttonText); 

     if (isDot) dotPresent = true; 
    } 
} 

上一个类应该只创建一次,并使用setOnClickListener()分配给每个按钮。

顺便说一下,另一种可能性是考虑使用正常的EditText作为inputType提供TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL | TYPE_NUMBER_FLAG_SIGNED。然后,软键盘应该向用户显示一个数字键盘,并且过滤器可以防止出现错误值。 Android的文档中的更多信息:
http://developer.android.com/reference/android/text/InputType.html#TYPE_NUMBER_FLAG_DECIMAL

+0

谢谢,男人,你是绝对正确的 – coreprojectz