2017-04-21 14 views
0

私は、ユーザー入力を受け入れてデータベースに保存する、完全に機能するアプリケーションを持っています。 「ログ」ボタンをクリックすると、情報がリストビューに表示されます。私は、私の列のうちの1つの実行中の合計を保持するforループを作成しました。列名は "grandTotal"で、これは私が夜間に行ったヒントの合計です。私が間違って何も入力せずに保存ボタンをクリックするまで、すべてがうまくいっていましたが、今はクラッシュしてしまい、その周りの方法を見つける方法がわかりません。どんな助けもありがとう!次のように私のコードは次のとおりです。データベースに値を入力するとAndroidアプリケーションが終了する

私は取得していますエラーは私がforループでのコード行からである
@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; 
} 

:I限り、私が言ったように

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) 

多分私は私のデータベースが保存されている場所を見つけると、私は誤って保存されたエントリを削除し、それを削除する必要があります。そして今から、私が実際に値を保存していることを確認してください。それを修正する方法があるなら、私はその知識には間違いなく感謝します。私は(何も)保存されていないとき

+0

例外を読んでください...それは自明です。 – Selvin

答えて

1

は、それは私があなたのlist.getGrandTotal()は任意の値を持っているか、空の文字列を持っていないと思うし、それがそうする前にチェックNumberFormatException

なりそう

をクラッシュ終わりました浮動小数点数を解析する:

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

上記のコードをforループに入力すると、何らかの理由で合計が正しく計算されません。 8.75,9.06,3.75の合計でデータベースに3つのエントリを入れてみました。そして、それぞれの実行合計の結果は8.75,18.12、および11.25でした。値はデータベース内のポジション番号で乗算されているようです。 –

+0

前に表示されている合計は大丈夫ですか? – rafsanahmad007

+0

'String value = list.getGrandTotal();'をforループの外側に入れてみてください。 – rafsanahmad007

関連する問題