我添加了下面给出的函数后,我的计算器android应用程序崩溃了

时间:2014-03-08 12:11:49

标签: java android xml

这是我的xml代码

<Button
    android:id="@+id/buttonSign"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="0dp"
    android:layout_weight="0.166"    
    android:text="±"
    android:onClick="ProcessSignInput" />

这是我的java代码

public void ProcessSignInput(View v)
{
    Button btn = (Button) v;
    if(inputText.length() > 0 && currentInput!="0")
    {
        if(currentInput.charAt(0) == '-')
        {
            inputText.setText(currentInput.subSequence(1, inputText.length()));
        }
        else
        {
            inputText.setText("-" + currentInput.toString());
        }
    }
}

这是当前输入的行

String currentInput = inputText.getText().toString();

在我添加这些行之前,每件事情都工作正常。没有应用只是崩溃任何人都可以提前解释造成这次崩溃的原因。

1 个答案:

答案 0 :(得分:1)

在扩展活动方法

的开头,你不能在创建方法之外编写代码

您必须在Button的Click事件中调用此方法。用这个。如果你在onCreate()方法之外调用它

String currentInput = inputText.getText().toString();

它将始终为null,因为那时您找不到EditText或TextView UI元素的ID,并且该值或字符串包含空数据。所以它总是空指针异常。

public void ProcessSignInput(View v)
{
Button btn = (Button) v;
String currentInput = inputText.getText().toString();
if(inputText.length() > 0 && !currentInput.equalsIgnoreCase(0))
{
    if(currentInput.charAt(0) == '-'))
    {
        inputText.setText(currentInput.subSequence(1, inputText.length()));
    }
    else
    {
        inputText.setText("-" + currentInput.toString());
    }
}
}

也不要使用==比较String,使用

equals() or equalsIgnoreCase()