Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 原因:java.lang.InstantiationException,但我没有';我不知道如何修复,为什么_Android_Sqlite_Graph - Fatal编程技术网

Android 原因:java.lang.InstantiationException,但我没有';我不知道如何修复,为什么

Android 原因:java.lang.InstantiationException,但我没有';我不知道如何修复,为什么,android,sqlite,graph,Android,Sqlite,Graph,我已经编辑了源代码,但是我有bug,我不明白源代码类LineGraph.java在哪里以及为什么会出现错误 公共类LineGraph扩展活动{ 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

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

公共类LineGraph扩展活动{

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

有人能帮我吗?

不要替换
活动的构造函数。每个
活动
都由系统实例化,它需要有一个
公共
无参数构造函数

一旦告诉系统要启动
线形图
活动
,系统将尝试执行
新建线形图()
。然后,系统设置
上下文
活动
所需的所有状态。完成后,它将调用
onCreate
方法

你可以这样做

public class LineGraph extends Activity {
    public LineGraph() {
        super();
        // you could do init here, but you better don't
    }
}
但我建议不要这样做,因为此时您没有
上下文
,而且
活动
中的任何内容都不起作用

onCreate
中执行此操作


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

您是否在AndroidManifest.xml中声明了此活动?如果您这样做,什么是android:name
value?您已经为这个类提供了一个构造函数。不要那样做。实例的构建由Android为您处理。@Wenhui是的,这是正确的???@David Wasser,嗯,有些困惑,因为我自学成才,但我会尝试,感谢上帝保佑:)Android有一个管理生命周期(创建、销毁等)的框架对于某些组件,您需要了解其工作原理,否则将浪费大量时间。如果您是Android编程新手(或一般编程新手),那么我建议您看看developer.Android.com上提供的一些示例应用程序,或者看看我仍然不了解的示例,您能举个例子吗??意味着我必须在DBHelper和线图之间进行分隔?@RinkuTriadi您不能做任何事情。如果每个类都有一个(和它自己的文件),那么它只是一个更干净的代码样式。例如,如果您想从另一个
活动
访问同一数据库,那么将数据访问与
活动
分离会更容易。