0

I've got a list of users inputs (EditTexts) and using them I want to calculate the total to show in TextView TotalNum.

Logcat shows there is something wrong with line 70 of Expanse.java which is

TotalNum.setText("£" + exTotal);

I've tried taking out the exTotal double figure which I thought may have caused the error however it still says 'Unfortunately app name has stopped working' when I press the calculate button after entering all the numbers for each EditText.

What am I doing wrong?

public class Expense extends Activity {

    double exTotal, exRent, exElect, exHeat, exNet, exMobile, exOther;
    TextView Total, TotalNum, Rent, Elect, Heat, Net, Mobile, Other;
    EditText eRent, eElect, eHeat, eNet, eMobile, eOther;
    String eRentS, eElectS, eHeatS, eNetS, eMobileS, eOtherS;
    Button cal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.expense);

        Rent = (TextView) findViewById(R.id.tvRent);
        Elect = (TextView) findViewById(R.id.tvElectricity);
        Heat = (TextView) findViewById(R.id.tvHeating);
        Net = (TextView) findViewById(R.id.tvInternet);
        Mobile = (TextView) findViewById(R.id.tvMobile);
        Other = (TextView) findViewById(R.id.tvOther);
        Total = (TextView) findViewById(R.id.tvTotalExpense);
        TotalNum = (TextView) findViewById(R.id.tvExpenseNum);

        eRent = (EditText) findViewById(R.id.etRent);
        eElect = (EditText) findViewById(R.id.etElectricity);
        eHeat = (EditText) findViewById(R.id.etHeating);
        eNet = (EditText) findViewById(R.id.etInternet);
        eMobile = (EditText) findViewById(R.id.etMobile);
        eOther = (EditText) findViewById(R.id.etOther);

        cal = (Button) findViewById(R.id.bCal);
        cal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub              
                eRentS = eRent.getText().toString();
                eElectS = eElect.getText().toString();
                eHeatS = eHeat.getText().toString();
                eNetS = eNet.getText().toString();
                eMobileS = eMobile.getText().toString();
                eOtherS = eOther.getText().toString();

                exRent = Double.parseDouble(eRentS);
                exElect = Double.parseDouble(eElectS);
                exHeat = Double.parseDouble(eHeatS);
                exNet = Double.parseDouble(eNetS);
                exMobile = Double.parseDouble(eMobileS);
                exOther = Double.parseDouble(eOtherS);

                exTotal = exRent + exElect + exHeat + exNet + exMobile + exOther;
                TotalNum.setText("£" + exTotal);
            }
        });
    }
}

Logcat

05-30 11:45:44.694: E/AndroidRuntime(775): FATAL EXCEPTION: main
05-30 11:45:44.694: E/AndroidRuntime(775): java.lang.NullPointerException
05-30 11:45:44.694: E/AndroidRuntime(775):  at com.studentbudget.Expense$1.onClick(Expense.java:70)
05-30 11:45:44.694: E/AndroidRuntime(775):  at android.view.View.performClick(View.java:4204)
05-30 11:45:44.694: E/AndroidRuntime(775):  at android.view.View$PerformClick.run(View.java:17355)
05-30 11:45:44.694: E/AndroidRuntime(775):  at android.os.Handler.handleCallback(Handler.java:725)
05-30 11:45:44.694: E/AndroidRuntime(775):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-30 11:45:44.694: E/AndroidRuntime(775):  at android.os.Looper.loop(Looper.java:137)
05-30 11:45:44.694: E/AndroidRuntime(775):  at android.app.ActivityThread.main(ActivityThread.java:5041)
05-30 11:45:44.694: E/AndroidRuntime(775):  at java.lang.reflect.Method.invokeNative(Native Method)
05-30 11:45:44.694: E/AndroidRuntime(775):  at java.lang.reflect.Method.invoke(Method.java:511)
05-30 11:45:44.694: E/AndroidRuntime(775):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-30 11:45:44.694: E/AndroidRuntime(775):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-30 11:45:44.694: E/AndroidRuntime(775):  at dalvik.system.NativeStart.main(Native Method)
Tim
  • 41,901
  • 18
  • 127
  • 145
Mark O'Sullivan
  • 10,138
  • 6
  • 39
  • 60

2 Answers2

0

try using the unicode for the sterling symbol \u00A3 instead of the actual £ symbol, java might be having a problem recognizing it.

post the logcat of the other error, it should give you the line number of the class file where the crash happens.

Though it looks like its probably gonna be a NumberFormatException as it expects a string in the format of a double and probably getting something else

Patrick Evans
  • 41,991
  • 6
  • 74
  • 87
0

This may cause due to some space that you have entered in your edit texts. You can avoid spaces by this.

eRentS = eRent.getText().toString();
            eElectS = eElect.getText().toString().trim();
            eHeatS = eHeat.getText().toString().trim(;
            eNetS = eNet.getText().toString().trim(;
            eMobileS = eMobile.getText().toString().trim(;
            eOtherS = eOther.getText().toString().trim(;
Syamantak Basu
  • 905
  • 4
  • 10
  • 20