簡體   English   中英

添加參數do方法后,應用崩潰

[英]App crashes after adding parameter do method

我的簡單計算器應用出現問題:

當我有了這樣的方法

public void WypiszWartoscPrzycisku(View sender)

它工作正常,一切都很好,但是當我添加float時,我的意思是:

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方法將解決我的主要問題。 我的代碼是(已更改為英文名稱)開關(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.Equalsnum1沒有聲明。 謝謝:)

看起來在布局xml中,您有一個具有以下屬性的按鈕

  android:onClick="WypiszWartoscPrzycisku"

所以你需要

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

  }  

android:onClick

單擊該視圖時在此View上下文中調用的方法的名稱。 該名稱必須對應於一個公共方法,該方法只使用View類型的一個參數。 例如, 如果您指定android:onClick =“ sayHello”,則必須聲明上下文(通常是Activity)的公共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" ,所以必須這樣android:onClick="WypiszWartoscPrzycisku"並且當您單擊按鈕時,您將獲得一個異常,無法在Activity中找到方法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

您應該始終僅使用第一種方法。 這是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
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM