【发布时间】:2017-07-04 19:36:22
【问题描述】:
我是 java 初学者,但我正在尝试构建练习,但遇到了这个问题。用户输入捐款,按下按钮,捐款的价值就会增加。我已经编写了整个代码,但是当我单击按钮添加到捐赠计数时,应用程序崩溃了。我听从了老师的所有教诲。我在活动中创建了一个方法,在 ui 构建器中,我转到 click 属性上的按钮并将其设置为该方法。它应该顺利进行,但每当我单击按钮时它就会崩溃。这是我将 onClick 属性设置为 computeDonation 的活动。
public void computeDonation(View v){
String addedText = ((EditText)findViewById(R.id.AmountText)).getText().toString();
DonationModel donation = new DonationModel(addedText);
String answer = donation.calcDonation();
((TextView)findViewById(R.id.totalText)).setText(answer);
}
这是模型:
String textAdded;
double addedDonation;
public DonationModel(String y) {
textAdded = y;
}
public String calcDonation(){
double counter = Double.parseDouble(textAdded);
addedDonation += counter;
Locale locale = new Locale("en", "CA");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
return fmt.format(addedDonation);
}
我什至尝试不使用数字格式只是为了查看它是否会发送回活动,但它没有。顺便说一句,我的班级使用的是旧版本的 android studio。
这是日志猫:
02-15 17:12:28.797 21619-21619/ca.roumani.donations E/AndroidRuntime: 致命异常: main 进程:ca.roumani.donations,PID:21619 java.lang.IllegalStateException:无法执行 android:onClick 的方法 在 android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 在 android.view.View.performClick(View.java:5197) 在 android.view.View$PerformClick.run(View.java:20909) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5942) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 在 android.view.View.performClick(View.java:5197) 在 android.view.View$PerformClick.run(View.java:20909) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5942) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 引起:java.lang.NumberFormatException:无效双:“” 在 java.lang.StringToReal.invalidReal(StringToReal.java:63) 在 java.lang.StringToReal.parseDouble(StringToReal.java:267) 在 java.lang.Double.parseDouble(Double.java:301) 在 ca.roumani.donations.DonationModel.calcDonation(DonationModel.java:20) 在 ca.roumani.donations.DonationActivity.computeDonation(DonationActivity.java:24) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 在 android.view.View.performClick(View.java:5197) 在 android.view.View$PerformClick.run(View.java:20909) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5942) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
【问题讨论】:
-
只是猜测:尝试 Locale locale = new Locale ("en_CA")
-
"at ca.roumani.donations.DonationModel.calcDonation(DonationModel.java:20)" DonationModel.java 的第 20 行是什么?
标签: java android android-studio button crash