-2

I keep getting this error :( The Errors appear at Donasi.class

This is in class Donasi:

 int total = 0;
    for (Transaksi transaksi:donasi)
        total += (Integer.parseInt(transaksi.getMinimal()))*(Integer.parseInt(transaksi.getQuantity()));
        Locale locale = new Locale("in", "ID");
        NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
        txtTotalDonasi.setText(fmt.format(total));

This is in class DonationAdapter:

    int minimal = (Integer.parseInt(listData.get(position).getMinimal()))*(Integer.parseInt(listData.get(position).getQuantity()));

    holder.txt_minimal.setText(fmt.format(minimal));

    holder.txt_nama_donasi.setText(listData.get(position).getNamaDonasi());

This is my Logcat :

12-28 14:20:36.283 2579-2579/da.glowroz.donationapp E/AndroidRuntime: FATAL EXCEPTION: main
     Process: da.glowroz.donationapp, PID: 2579
     java.lang.RuntimeException: Unable to start activity ComponentInfo{da.glowroz.donationapp/da.glowroz.donationapp.Donasi}: java.lang.NumberFormatException: For input string: "null"
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NumberFormatException: For input string: "null"
at java.lang.Integer.parseInt(Integer.java:521)
at java.lang.Integer.parseInt(Integer.java:556)
at da.glowroz.donationapp.Donasi.loadListDonasi(Donasi.java:134)
at da.glowroz.donationapp.Donasi.onCreate(Donasi.java:72)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6077) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

How to solve this problem?

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
GlowRoz
  • 11
  • 1
  • 2

4 Answers4

2

Either transaksi.getMinimal() or transaksi.getQuantity() are null

so check before trying to parseInt

Maybe like

if (transaksi.getMinimal() != null && transaksi.getQuantity() != null) {
     total += (Integer.parseInt(transaksi.getMinimal()))*
            (Integer.parseInt(transaksi.getQuantity()));
}
Scary Wombat
  • 44,617
  • 6
  • 35
  • 64
1
Caused by: java.lang.NumberFormatException: For input string: "null"

NumberFormatException is an Exception that might be thrown when you try to convert a String into a number, where that number might be an int , a float , or any other Java numeric type

You are getting null . Which is not int. Add null checking

total += (Integer.parseInt(transaksi.getMinimal()))*(Integer.parseInt(transaksi.getQuantity())); // Problem coming from this end

Debug your app. Add BREAK-POINT beside total .

Add try-catch block

try
{
    // Your work
}
catch(NumberFormatException ex)
{
    System.out.println("wrong input");

}
IntelliJ Amiya
  • 74,896
  • 15
  • 165
  • 198
0

Try to check for null on getMinimal() and getQuantity() before parsing.

if (transaksi.getMinimal() != null && transaksi.getQuantity() != null) {
 total += (Integer.parseInt(transaksi.getMinimal()))*
        (Integer.parseInt(transaksi.getQuantity()));
}

OR

keep the parsing code in the try block and catch for NumberFormatException. This also helps when getMinimal() or getQuantity() is not null and not number string

try {
 total += (Integer.parseInt(transaksi.getMinimal()))*
        (Integer.parseInt(transaksi.getQuantity()));
}catch(NumberFormatException e){
Log.e("TAG","Excepting parsing Integer from string");
}
-1

transaksi.getMinimal() and transaksi.getQuantity() should be valid number string to parse as Integer

if (transaksi.getMinimal() != null && transaksi.getQuantity() != null && transaksi.getMinimal().equalIgnoreCase("null") && transaksi.getQuantity() .equalIgnoreCase("null") && !transaksi.getMinimal().isEmpty() && !transaksi.getQuantity().isEmpty()) {
     total += (Integer.parseInt(transaksi.getMinimal()))*
            (Integer.parseInt(transaksi.getQuantity()));
}
Naveen Kumar M
  • 7,497
  • 7
  • 60
  • 74