0

我的简单计算器应用程序有问题:

当我有这样的方法时

public void WypiszWartoscPrzycisku(View sender)

它工作正常,一切正常,但是当我添加浮动时,我的意思是:

public void WypiszWartoscPrzycisku(View sender, float num1)

它崩溃了。我不知道我应该多给点什么,因为我什么也没做num1,应用程序仍然崩溃。

XML(对不起,我的母语不是英语,所以我用我的语言命名了很多东西)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button_AC"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/AC"
            android:onClick="WypiszWartoscPrzycisku"/>

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="@string/wynik"
            android:inputType="number" >

            <requestFocus />
        </EditText>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_Siedem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/siedem" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_Osiem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/osiem"
            android:onClick="WypiszWartoscPrzycisku" />

        <Button
            android:id="@+id/button_Dziewiec"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/dziewiec"
            android:onClick="WypiszWartoscPrzycisku" />


        <Button
            android:id="@+id/button_Plus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/plus" 
            android:onClick="WypiszWartoscPrzycisku"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_Cztery"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/cztery" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_Piec"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/piec" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_Szesc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/szesc"
            android:onClick="WypiszWartoscPrzycisku" />

        <Button
            android:id="@+id/button_Minus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/minus"
            android:onClick="WypiszWartoscPrzycisku" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_Jeden"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/jeden" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_Dwa"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/dwa" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_Trzy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/trzy"
            android:onClick="WypiszWartoscPrzycisku" />

        <Button
            android:id="@+id/button_Mnozenie"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/mnozenie"
            android:onClick="WypiszWartoscPrzycisku" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_Zero"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/zero" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_Kropka"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/kropka" />

        <Button
            android:id="@+id/buttonRownasie"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/rownasie" 
            android:onClick="WypiszWartoscPrzycisku"/>

        <Button
            android:id="@+id/button_dzielenie"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/dzielenie"
            android:onClick="WypiszWartoscPrzycisku" />
    </LinearLayout>

</LinearLayout>

编辑:

谢谢@beworker 和@Raghunandan 的回答。我得到它。我虽然添加参数 do 方法将解决我的主要问题。我的代码是(更改为英文名称) switch (bt.getId()){

    case R.id.button_AC:
        display.setText("");
        break;

    case R.id.button_Plus:
        float num1 = Float.parseFloat(actualText.toString());
        display.setText("");
        break;

    case R.id.buttonEquals:
        float num2 = Float.parseFloat(actualText.toString());
        float num3 = num1+num2;
        String result  = Float.toString(num3);
        display.setText(wynik);

case R.id.Equals它说,最后num1没有声明。谢谢:)

4

2 回答 2

1

看起来在您的布局 xml 中有一个具有以下属性的按钮

  android:onClick="WypiszWartoscPrzycisku"

所以你需要有

  public void WypiszWartoscPrzycisku(View sender) // method signature should be like this
  {

  }  

android:onClick

单击视图时要在此视图的上下文中调用的方法的名称。此名称必须对应于只采用一个 View 类型参数的公共方法。例如,如果您指定 android:onClick="sayHello",则必须声明您的上下文(通常是您的 Activity)的 public void sayHello(View v) 方法

http://developer.android.com/reference/android/view/View.html#attr_android:onClick

如果你有这个

 public void WypiszWartoscPrzycisku(View sender, float num1)

你的活动没有WypiszWartoscPrzycisku(View sender),因为你有,当你点击按钮时,你会得到一个异常,在活动中android:onClick="WypiszWartoscPrzycisku"找不到方法。WypiszWartoscPrzycisku(View)

编辑:

    case R.id.button_Plus:
    float num1 = Float.parseFloat(actualText.toString()); // declared and initialized here
    display.setText("");
    break;

但是你在这里使用它

    case R.id.buttonEquals:
    float num2 = Float.parseFloat(actualText.toString());
    float num3 = num1+num2;

您需要声明num1为类成员

编辑2:

   case R.id.buttonEquals: 
   //  check if you have a button with id R.id.buttonEquals
于 2013-11-03T15:29:59.370 回答
0

您应该始终只使用第一种方法。这是 Android 将寻找的方法。您可以将它与每个 Button 一起使用,但是您需要检查发件人 ID 以执行适当的操作。这是一个例子。

public void WypiszWartoscPrzycisku(View sender) {
  if (sender.getId() == R.id.button_Cztery) {
    // execute code for button_Cztery
  } else if (sender.getId() == R.id.button_Dziewiec) {
    // execute code for button_Dziewiec
  } else if (sender.getId() == R.id.button_Plus) {
    // execute code for button_Plus
  }
}
于 2013-11-03T15:33:05.990 回答