Editing previous post with better info:
APP summary: 2 sections Section 1 has two textnumber inputs + 1 calculation button + 1 textview result Section 2 has two textnumber inputs + 1 calculation button + 1 textview result
So, upon launch everything is fine, no crash.
Now, if all 4 textnumber inputs are not empty, if you press button 1 it will calculate result and put it in result 1, but will reset result 2 to 0. If I press on the second button, opposite happens. Calculation is done correctly, correclty placed in result 2, but result 1 is reset to 0.
But, if any of the 4 inputs happens to be empty, the APP will just quit. Current modified code is below and also debugging result at moment of crash.
package com.example.salescalculator;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity
implements View.OnClickListener{
Button Pricebutton, MaxCostbutton;
EditText num1, num2, num3, num4;
TextView result1, result2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1 = (EditText) findViewById(R.id.costinput);
num2 = (EditText) findViewById(R.id.margininput);
num3 = (EditText) findViewById(R.id.tpinput);
num4 = (EditText) findViewById(R.id.margininput2);
Pricebutton = (Button) findViewById(R.id.buttoncalcprice);
MaxCostbutton = (Button) findViewById(R.id.buttoncalculatecost);
result1 = (TextView) findViewById(R.id.priceresult);
result2 = (TextView) findViewById(R.id.maxcostresult);
Pricebutton.setOnClickListener(this);
MaxCostbutton.setOnClickListener(this);
}
public void onClick(View v) {
float cost1, margin1, custTP, margin2;
float result1A = 0;
float result2B = 0;
cost1=Float.parseFloat(num1.getText().toString());
margin1=Float.parseFloat(num2.getText().toString());
custTP=Float.parseFloat(num3.getText().toString());
margin2=Float.parseFloat(num4.getText().toString());
if (!TextUtils.isEmpty(num1.getText().toString())) {
cost1 = Float.parseFloat(num1.getText().toString());
}
if (!TextUtils.isEmpty(num2.getText().toString())) {
margin1 = Float.parseFloat(num2.getText().toString());
}
if (!TextUtils.isEmpty(num3.getText().toString())) {
custTP = Float.parseFloat(num3.getText().toString());
}
if (!TextUtils.isEmpty(num4.getText().toString())) {
margin2 = Float.parseFloat(num4.getText().toString());
}
if(v.getId()==R.id.buttoncalcprice) {
result1A = cost1 / (1- (margin1/100));
}
else if (v.getId()== R.id.buttoncalculatecost) {
result2B = custTP - ((margin2/100)*custTP);
}
result1.setText(result1A + "");
result2.setText(result2B + "");
}
}
Crash Log
--------- beginning of crash
2019-10-08 16:46:48.544 4994-4994/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.salescalculator, PID: 4994
java.lang.NumberFormatException: empty String
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071)
at java.lang.Float.parseFloat(Float.java:459)
at com.example.salescalculator.MainActivity.onClick(MainActivity.java:44)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
2019-10-08 16:46:48.555 1381-1425/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 1473729 , only wrote 1473120