Android表格布局中的空例外错误(列表<>)

时间:2016-06-25 09:16:32

标签: java android sqlite nullpointerexception tablelayout

我试图从sqlite数据库中检索数据并将其显示为android中的表格布局。但是日志显示存在一些错误:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.util.List info.androidhive.materialdesign.DatabaseHelper.getAll()'。我找不到有什么问题。

Logcat:

    --------- beginning of crash
06-25 08:52:26.617 7899-7899/info.androidhive.materialdesign E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: info.androidhive.materialdesign, PID: 7899
                                                                           java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.materialdesign/info.androidhive.materialdesign.activity.Graf}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List info.androidhive.materialdesign.DatabaseHelper.getAll()' on a null object reference
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                            Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List info.androidhive.materialdesign.DatabaseHelper.getAll()' on a null object reference
                                                                               at info.androidhive.materialdesign.activity.Graf.onCreate(Graf.java:49)
                                                                               at android.app.Activity.performCreate(Activity.java:6237)
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

数据库编码:

    public List<Graf> getAll()
{
    List<Graf> countryList = new ArrayList<>();

    //select query
    String selectQuery = "SELECT DATE, COUNT(PERCENT) FROM Drink_Table GROUP BY DATE";

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);


    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
    {
        Graf graf = new Graf();
        graf.setDater(cursor.getString(0));
        graf.setAmount(cursor.getString(1));


        // Adding person to list
        countryList.add(graf);
    }

    return countryList;

}

XML:

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/tab">
        <TableRow
            >
        </TableRow>
    </TableLayout>

活动编码:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_graf);
    myDb=new DatabaseHelper(this);

    List<Graf> graf = myDb.getAll();

    StringBuilder builder = new StringBuilder();
    for (Graf c: graf)
    {
        builder.append(c.getDater()).append(";")
                .append(c.getAmount()).append(";");
    }
    //tv.setText(builder.toString());

    builder.toString();

    String st = new String(builder);
    Log.d("Main",st);
    String[] rows  = st.split("_");
    TableLayout tableLayout = (TableLayout)findViewById(R.id.tab);
    tableLayout.removeAllViews();

    for(int i=0;i<rows.length;i++){
        Log.d("Rows",rows[i]);
        String row  = rows[i];
        TableRow tableRow = new TableRow(getApplicationContext());
        tableRow.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        final String[] cols = row.split(";");

        Handler handler = null;

        for (int j = 0; j < cols.length; j++) {
            final String col = cols[j];
            TextView columsView = new TextView(getApplicationContext());
            columsView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
            columsView.setText(String.format("%7s", col));
            Log.d("Cols", String.format("%7s", col));
            tableRow.addView(columsView);

        }
        tableLayout.addView(tableRow);
    }



}

提前致谢。

0 个答案:

没有答案