-1

我已经编辑了源代码,但是我有错误,我不明白在哪里以及为什么会发生错误,这是源代码类 LineGraph.java

公共类 LineGraph 扩展 Activity {

public static final String ROW_ID = "id";
public static final String ROW_NAMA = "nama";
public static final String ROW_BERAT = "berat";

public static final String DATABASE_NAME = "tes.sqlite";
public static final String DATABASE_TABLE = "tis";
public static final int DATABASE_VERSION = 1;

public SQLiteDatabase database;
public DBHelper dbhelper;
public final Context kontext;


public static class DBHelper extends SQLiteOpenHelper {

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + ROW_ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + ROW_NAMA
                + " TEXT NOT NULL, " + ROW_BERAT + " TEXT NOT NULL );");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}

public LineGraph(Context c) {
    kontext = c;
}

public LineGraph open() {
    dbhelper = new DBHelper(kontext);
    database = dbhelper.getWritableDatabase();
    return this;
}

public void close() {
    dbhelper.close();
}

public long createEntry(String data, String date) {
    // , String date
    // TODO Auto-generated method stub
    ContentValues cv = new ContentValues();
    cv.put(ROW_NAMA, data);
    cv.put(ROW_BERAT, date);
    return database.insert(DATABASE_TABLE, null, cv);
}

public String getBMIID() {
    // TODO Auto-generated method stub
    String[] column = new String[] { ROW_ID };
    Cursor c = database.query(DATABASE_TABLE, column, null, null, null,
            null, null);

    String result = "";
    int iID = c.getColumnIndex(ROW_ID);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iID);
    }

    return result;
}

public String getBMIDataData() {

    String[] column = new String[] { ROW_NAMA };
    Cursor c = database.query(DATABASE_TABLE, column, null, null, null,
            null, null);

    String result = "";
    int iData = c.getColumnIndex(ROW_NAMA);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iData);
    }

    return result;
}

public String getBMIDateData() {
    String[] column = new String[] { ROW_BERAT };
    Cursor c = database.query(DATABASE_TABLE, column, null, null, null,
            null, null);

    String result = "";
    int iDate = c.getColumnIndex(ROW_BERAT);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iDate);
    }

    return result;
}

public void updateEntry(long lId, String mData, String mDate) {
    // TODO Auto-generated method stub
    ContentValues cvUpdate = new ContentValues();

    cvUpdate.put(ROW_NAMA, mData);
    cvUpdate.put(ROW_BERAT, mDate);
    database.update(DATABASE_TABLE, cvUpdate, ROW_ID + " = lId", null);
}

public String getData(long l) {
    // TODO Auto-generated method stub
    return null;
}

public String getDate(long l) {
    // TODO Auto-generated method stub
    return null;
}

public XYMultipleSeriesDataset getDemoDataset(String title) {

    String[] column = new String[] { ROW_NAMA };
    Cursor c = dbhelper.getWritableDatabase().query(DATABASE_TABLE,
            column, null, null, null, null, null);

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

    TimeSeries series = new TimeSeries("Line1");
    TimeSeries series2 = new TimeSeries(title);

    getBMIDataData();

    while (!c.isAfterLast()) {
        int date = c.getInt((Integer) c.getColumnIndexOrThrow("bmi_date"));
        int weight = c
                .getInt((Integer) c.getColumnIndexOrThrow("bmi_data"));
        series2.add(weight, date);
        c.moveToNext();
    }

    c.close();

    dataset.addSeries(series);
    dataset.addSeries(series2);

    return dataset;
}

public Intent getIntent(Context context) {

    // Lager TimeSeries for den første linja
    XYMultipleSeriesDataset dataset = getDemoDataset("Line1");

    // Kode for render
    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();

    // Optimalisering linje1
    XYSeriesRenderer renderer = new XYSeriesRenderer();
    renderer.setColor(Color.YELLOW);
    renderer.setPointStyle(PointStyle.CIRCLE);
    renderer.setFillPoints(true);

    // Optimalisering linje2 husk rekke følgen
    XYSeriesRenderer renderer2 = new XYSeriesRenderer();
    renderer2.setColor(Color.BLUE);
    renderer2.setPointStyle(PointStyle.SQUARE);
    renderer2.setFillPoints(true);

    // Legger til render seriene
    mRenderer.addSeriesRenderer(renderer);

    // Optimalisering grafen
    mRenderer.setChartTitle("Test");
    mRenderer.setZoomEnabled(true);
    mRenderer.setZoomButtonsVisible(true);
    mRenderer.setBackgroundColor(Color.BLACK);
    mRenderer.setApplyBackgroundColor(true);
    mRenderer.setXTitle("Dager");
    mRenderer.setShowGrid(true);

    mRenderer.addSeriesRenderer(renderer2);

    Intent intent = ChartFactory.getLineChartIntent(context, dataset,
            mRenderer, "Line Graph Title");

    return intent;

}

}

这是logcat

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{android.graph/android.graph.LineGraph}: java.lang.InstantiationException: android.graph.LineGraph

Caused by: java.lang.InstantiationException: android.graph.LineGraph

有人可以帮助我吗?

4

1 回答 1

1

不要替换Activity. EveryActivity由系统实例化,它需要有一个public无参数的构造函数。

一旦你告诉系统你想启动LineGraph Activity它就会尝试做new LineGraph()。之后,系统Context会为您的Activity. 一旦完成,它将调用该onCreate方法。

你可以这样做

public class LineGraph extends Activity {
    public LineGraph() {
        super();
        // you could do init here, but you better don't
    }
}

但我建议不要这样做,因为那时你还没有Context,而且还没有任何Activity作品。

onCreate.

附带说明:将像您这样的类DBHelper放在自己的文件中通常比将它们包含在大型代码段中更好。如果您不创建它也是一个好主意LineGraphActivity因为它已经处理了数据库访问(或将数据库访问部分提取到它自己的类文件中)。尽量让每个对象承担一项责任。

于 2012-11-28T18:37:02.373 回答