Android 应用程序在将值输入数据库时关闭

安东尼·博利

我有一个功能齐全的应用程序,它接受用户输入并将其保存到数据库中。单击“日志”按钮后,信息将显示在列表视图中。我创建了一个 for 循环来保持我的一列的运行总数。列名是“grandTotal”,这是我为晚上所做的小费的汇总。一切都很好,直到我不小心点击了保存按钮而没有输入任何内容,现在它崩溃了,我不知道如何找到解决方法。任何帮助,将不胜感激!我的代码如下:

@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;
}

我得到的错误来自 for 循环中的这行代码:

sum = Float.valueOf(list.getGrandTotal()) + sum;

就像我说的那样,只要我实际将数据保存到数据库中,该应用程序就运行良好,但是当我保存(什么都不保存)时,它最终崩溃并且此后一直没有运行。

我得到的 logcat 错误是:

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)

也许我必须找出我的数据库的保存位置并删除我不小心保存的条目并将其删除。从现在开始,只要确保我确实在保存值,但如果有办法解决它,我肯定会感谢这些知识。

拉夫萨哈马德007

当我保存(没有)时,它最终崩溃了

所以我认为你list.getGrandTotal()没有任何价值或有空字符串,它会导致NumberFormatException

所以在解析为 Float 之前检查:

String value = list.getGrandTotal();
if (value != null && value.length() > 0) {
    sum = Float.valueOf(value) + sum;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Php - 将数据库的值与 android 应用程序发送的值进行比较的代码

将Android应用程序数据库与Windows窗体应用程序数据库同步

在Android的SQLite数据库中插入数据时,应用程序崩溃

Android 应用程序:从实时数据库到 Firestore - 将数据更新到数据库

从Android应用程序将数据提交到MySQL数据库

从我的Android应用程序将数据保存到远程数据库

REST PHP API尝试从Android应用程序将数据插入数据库

将数据从数据库推送到 Flask Web 应用程序和 Android 设备

将utf-8中的数据发送到Android应用程序的数据库

Android 应用程序无法将数据写入 Firebase 数据库

Android应用程序。从数据库中获取数据

Android 应用程序是否带有在应用程序发布时创建的 sqlite 数据库?

在Android应用程序中从远程数据库缓存值的正确方法

Android Firebase 数据库不断更新值并最终导致应用程序崩溃

使用 Firebase 数据库的 Android 应用程序在启动时总是崩溃?

更新时在已部署的Android应用程序上升级数据库

从预先存在的Android数据库中获取记录时,应用程序挂起

如何将Android应用程序与数据库连接?

将Android应用程序连接到Heroku数据库

将数据库添加到Android应用程序

使用USBWebserver将本地数据库与android应用程序连接

如何使用Php将Android应用程序连接到Amazon RDS MySQL数据库?

如何通过JSP和Servlet将android应用程序与mysql数据库通信

如何将 Android 应用程序连接到 AWS 数据库

如何将Clusterpoint数据库连接到Android应用程序

将 Android 应用程序连接到本地 Laravel 数据库

如何将数据库连接到我的Android应用程序?

无法将较大(大小)的图像从android应用程序上传到数据库

将静态数据库连接到我的 android 应用程序