[英]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.Equals
, num1
沒有聲明。 謝謝:)
看起來在布局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.