0
我在我的應用程序中使用圖表從我的數據庫(在我的應用程序中,5個值)中繪製某些值,這些值代表預算。當我的數據庫仍然是空的時候,我強制關閉。在這種情況下,當我的數據庫是空的時候,我應該做什麼來不要強行關閉?Android圖表異常
這是我的代碼:
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();
}
}
在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)
I put try { \t \t \t lv.setAxisValueX(datagrafic); \t \t \t lv.setItems(items); \t \t \t setContentView(lv); (例外e){ \t \t} catch(Exception e){ \t \t \t e.printStackTrace(); \t \t}我仍然有力量關閉。我做了一個調試,並且一切正常,直到課程結束,然後我得到關閉。在DDMS中,我得到了nullpointerexception。 – Gaby 2011-06-04 14:29:39
您確定在其中一次調用中發生異常嗎?異常的堆棧跟蹤包括什麼? – mah 2011-06-04 14:49:44