J'ai une application entièrement opérationnelle qui accepte l'entrée de l'utilisateur et l'enregistre dans une base de données. En cliquant sur un bouton "log", l'information est affichée dans une liste. J'ai créé une boucle for qui conserve un total cumulé de l'une de mes colonnes. Le nom de la colonne est "grandTotal", qui est un total de conseils que j'ai fait pour la nuit. Tout fonctionnait bien jusqu'à ce que je clique accidentellement sur le bouton de sauvegarde sans entrer quoi que ce soit, et maintenant il s'est écrasé, et je n'arrive pas à trouver un moyen de contourner le problème. Toute aide serait appréciée! Mon code est le suivant:Fermeture de l'application Android lors de la saisie des valeurs dans la base de données
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.contact_entry, null);
TextView name= (TextView) convertView.findViewById(R.id.contactName);
TextView contact = (TextView) convertView.findViewById(R.id.contact);
TextView address = (TextView) convertView.findViewById(R.id.addressConverted);
TextView orderTotal = (TextView) convertView.findViewById(R.id.orderTotalConverted);
TextView amountReceived = (TextView) convertView.findViewById(R.id.amountReceivedConverted);
TextView tip = (TextView) convertView.findViewById(R.id.tipConverted);
TextView mileage = (TextView) convertView.findViewById(R.id.mileageConverted);
TextView grandTotal = (TextView) convertView.findViewById(R.id.grandTotalConverted);
Button delete = (Button) convertView.findViewById(R.id.delete);
PhoneBook list = contactList.get(position);
name.setText(list.getName());
contact.setText(list.getPhoneNumber());
address.setText(list.getAddress());
orderTotal.setText(list.getOrderTotal());
amountReceived.setText(list.getAmountReceived());
tip.setText(list.getTip());
mileage.setText(list.getMileage());
grandTotal.setText(list.getGrandTotal());
delete.setOnClickListener(new ListItemClickListener(position, list));
TextView deliveryNumber = (TextView) convertView.findViewById(R.id.deliveryNum);
deliveryNumber.setText("Delivery # " + (position + 1));
TextView runningTotal = (TextView) convertView.findViewById(R.id.runningTotal);
float sum = 0;
for (int i = 0; i <= position; i++)
{
sum = Float.valueOf(list.getGrandTotal()) + sum;
}
runningTotal.setText("Running Total: " + sum);
return convertView;
}
L'erreur que je reçois est de cette ligne de code dans ma boucle:
sum = Float.valueOf(list.getGrandTotal()) + sum;
Comme je l'ai dit, l'application est en cours d'exécution grande aussi longtemps que je était en train d'enregistrer des données dans la base de données, mais quand j'ai sauvé (rien), il a fini par s'écraser et n'a pas fonctionné depuis.
L'erreur logcat Je reçois est:
FATAL EXCEPTION: main
Process: com.example.boley.databaseexample, PID: 23988
java.lang.NumberFormatException: Invalid float: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseFloat(StringToReal.java:308)
at java.lang.Float.parseFloat(Float.java:306)
at java.lang.Float.valueOf(Float.java:343)
at com.example.boley.databaseexample.PhonebookAdapter.getView(PhonebookAdapter.java:86)
at android.widget.AbsListView.obtainView(AbsListView.java:2929)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1305)
at android.widget.ListView.onMeasure(ListView.java:1212)
at android.view.View.measure(View.java:20158)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1111)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:631)
at android.view.View.measure(View.java:20158)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:20158)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:20158)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:20158)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:20158)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:3158)
at android.view.View.measure(View.java:20158)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2644)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1599)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1891)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1487)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7467)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920)
at android.view.Choreographer.doCallbacks(Choreographer.java:695)
at android.view.Choreographer.doFrame(Choreographer.java:631)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Peut-être que je vais devoir savoir où ma base de données est en cours d'enregistrement et de supprimer l'entrée que je accidentellement sauvé et le supprimer. Et à partir de maintenant, assurez-vous simplement que je suis en train d'économiser des valeurs, mais s'il y a un moyen de le réparer, j'apprécierais certainement les connaissances.
S'il vous plaît lire une exception ... Il est explicite. – Selvin