开发者

Android chart exception

I use charts in my app to draw certain value from my database (in my app,5 valueas),values that represent the budget. I get force close when my database is still empty. What should I do in this case,when my database is empty,to not obtain force close?

This is my code:

开发者_开发百科package com.ShoppingList.Budget;

import com.ShoppingList.R;
import com.ShoppingList.databases.DbAdapter;
import com.kidroid.kichart.model.Aitem;
import com.kidroid.kichart.view.LineView;

import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Toast;

public class Grafic extends Activity {

    LineView lv;
    private DbAdapter db;
    private Cursor cr;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        db = new DbAdapter(this);
        db.open();

        cr = db.getAllBudget();
        startManagingCursor(cr);

        String[] data = new String[cr.getCount()];
        int j = 0;
        if (cr != null && cr.moveToFirst()) {
            do {
                data[j] = db.getDataBudget(cr);
                System.out.println("@@@" + data[j] + "!!!");
                j++;
            } while (cr.moveToNext());
        } else
            Toast.makeText(this, "There are no data to share", 0).show();

        String datagrafic[] = new String[5];
        int k = 0;
        if (data.length >= 5) {
            for (int i = (data.length - 5); i < data.length; i++) {
                datagrafic[k] = data[i];
                k++;
            }
        } else
            for (int i = 0; i < data.length; i++) {
                datagrafic[k] = data[i];
                k++;
            }

        float[] budgets = new float[cr.getCount()];
        int i = 0;
        if (cr != null && cr.moveToFirst()) {

            do {
                budgets[i] = Float.valueOf(db.getBudget(cr));
                i++;
            } while (cr.moveToNext());
        } else
            Toast.makeText(this, "There are no data to share", 0).show();

        float[] budgetgrafic = new float[6];
        int m = 0;
        if (budgets.length >= 5) {
            for (i = budgets.length - 5; i < budgets.length; i++) {
                budgetgrafic[m] = budgets[i];
                m++;
            }
        } else {
            for (i = 0; i < budgets.length; i++) {
                budgetgrafic[m] = budgets[i];
                m++;
            }
        }

        Aitem items[] = new Aitem[1];
        if (cr != null) {
            items[0] = new Aitem(Color.RED, "Evolution", budgetgrafic);

            lv = new LineView(this);

            lv.setTitle("Budget");

            lv.setAxisValueX(datagrafic);

            lv.setItems(items);

            setContentView(lv);
        } else
            Toast.makeText(this, "There are no data to share", 0).show();
    }

}

In logcat:

java.lang.NullPointerException

   at android.graphics.Canvas.drawText(Native Method)

  at com.kidroid.kichart.view.AxisView.drawAxisXY(AxisView.java:82)

 at com.kidroid.kichart.view.LineView.onDraw(LineView.java:19)

android.view.View.draw(View.java:6535)

    at android.view.ViewGroup.drawChild(ViewGroup.java:1531)

06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.View.draw(View.java:6538)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.View.draw(View.java:6538)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.View.draw(View.java:6538)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewRoot.draw(ViewRoot.java:1349)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.os.Looper.loop(Looper.java:123)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at android.app.ActivityThread.main(ActivityThread.java:4363)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at java.lang.reflect.Method.invokeNative(Native Method)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at java.lang.reflect.Method.invoke(Method.java:521)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-04 14:50:43.140: ERROR/AndroidRuntime(25306):     at dalvik.system.NativeStart.main(Native Method)
06-04 14:50:45.699: ERROR/gralloc(59): [unregister] handle 0x41cf40 still locked (state=40000001)


Wrap the code that has the potential to generate an exception with an appropriate exception handler. If you examine your logcat output, you'll see exactly what exception is being thrown (and a stack trace at the time of the exception; your last executed line of code will be within that trace).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜