2011-05-12 50 views
0

我不知道爲什麼它返回我nullpointerexception。我認爲是因爲表格沒有數據。所以,數據似乎沒有添加到數據庫中爲什麼不能將數據插入sqlite?

這是我的活動課。

private void createdata(){ 

    String title[] = {"rancangan1", "rancangan2", "rancangan3", "rancangan4", "rancangan5"}; 
    String date[] = {"isnin", "selasa", "rabu", "khamis", "jumaat"}; 
    String time[] = {"17:00-18:00", "18:00-19:00", "17:00-18:00", "18:00-19:00", "19:00-20:00"}; 
    String channel[] = {"astro ria", "astro ria", "astro ria", "astro ria", "astro ria"}; 
    try{ 
    for(int i = 0; i < title.length; i++){ 
     ContentValues values = new ContentValues(); 
     values.put(ImamShareData.DataContent.KEY_PROGRAM_TITLE, title[i]); 
     values.put(ImamShareData.DataContent.KEY_PROGRAM_DATE, date[i]); 
     values.put(ImamShareData.DataContent.KEY_PROGRAM_TIME, time[i]); 
     values.put(ImamShareData.DataContent.KEY_PROGRAM_CHANNEL, channel[i]); 
     cr.insert(ImamShareData.DataContent.PROGRAM_URI, values); 
      //Log.i(TAG, "Successfully added index " + i + " as ID " + mId[i]); 
    } 
    }catch(Exception e){ 
     Log.v("error",""+e); 
    } 

} 
private void filldata(){ 

    String[] from = new String[]{ImamShareData.DataContent.KEY_PROGRAM_DATE, ImamShareData.DataContent.KEY_PROGRAM_TIME, ImamShareData.DataContent.KEY_PROGRAM_CHANNEL}; 
    String[] from1 = new String[]{ImamShareData.DataContent.KEY_PROGRAM_TITLE}; 

    int[] to = new int[]{R.id.programdate, R.id.programtime, R.id.programchannel}; 
    int[] to1 = new int[]{R.id.programtitle}; 

    SimpleExpandableListAdapter SEL = new SimpleExpandableListAdapter(this, 
        createGroupList(), R.layout.programgroup_row, from1, to1,  
        createChildList(), R.layout.programchild_row, from, to); 
    setListAdapter(SEL); 
} 
private List createGroupList() { 
    String[] column = new String[]{ImamShareData.DataContent.KEY_PROGRAM_TITLE}; 
    ArrayList result = new ArrayList(); 
    String title[] = null; 
    for(int i = 1 ; i <= 5; ++i) { 
     Cursor cursor = managedQuery(ImamShareData.DataContent.PROGRAM_URI, column, null, null, null);  
     HashMap m = new HashMap(); 
     title[i] = cursor.getColumnName(cursor.getColumnIndex(ImamShareData.DataContent.KEY_PROGRAM_TITLE)); 
     m.put(ImamShareData.DataContent.KEY_PROGRAM_TITLE, title[i]); 
     result.add(m); 
    } 
    return result; 
} 

private List createChildList() { 
    String date; 
    String time; 
    String channel; 
    String[] column = new String[]{ImamShareData.DataContent.KEY_PROGRAM_DATE, ImamShareData.DataContent.KEY_PROGRAM_TIME, ImamShareData.DataContent.KEY_PROGRAM_CHANNEL}; 
    ArrayList result = new ArrayList(); 
    for(int i = 1 ; i <= 5 ; ++i) { 
     ArrayList secList = new ArrayList(); 
     for(int n = 0 ; n < 3 ; n+=3) { 
      Cursor cursor = managedQuery(ImamShareData.DataContent.PROGRAM_URI, column, null, null, null); 
      HashMap child = new HashMap(); 
      date = cursor.getColumnName(cursor.getColumnIndex(ImamShareData.DataContent.KEY_PROGRAM_DATE)); 
      time = cursor.getColumnName(cursor.getColumnIndex(ImamShareData.DataContent.KEY_PROGRAM_TIME)); 
      channel = cursor.getColumnName(cursor.getColumnIndex(ImamShareData.DataContent.KEY_PROGRAM_CHANNEL)); 
      child.put(ImamShareData.DataContent.KEY_PROGRAM_DATE, date); 
      child.put(ImamShareData.DataContent.KEY_PROGRAM_TIME, time); 
      child.put(ImamShareData.DataContent.KEY_PROGRAM_CHANNEL, channel); 
      secList.add(child); 
     } 
     result.add(secList); 
    } 
    return result; 
} 

這是我ContentProvider類

@Override 
public Uri insert(Uri uri, ContentValues initialvalues) { 
    TableNumber = sUriMatcher.match(uri); 
    if(TableNumber != PROGRAM){ 
     throw new IllegalArgumentException("Unknown URI " + uri); 
    } 

    ContentValues values; 
    if(initialvalues != null){ 
     values = new ContentValues(initialvalues); 
    }else{ 
     values = new ContentValues(); 
    } 

    SQLiteDatabase mDb = mDbHelper.getWritableDatabase(); 
    long rowId = mDb.insert(DatabaseHelper.TABLE_PROGRAM, null, values); 
    if(rowId > 0){ 
     Uri programUri = ContentUris.withAppendedId(ImamShareData.DataContent.PROGRAM_URI, rowId); 
     getContext().getContentResolver().notifyChange(programUri, null); 
     return programUri; 
    } 
    throw new IllegalArgumentException("Failed to insert row into " + uri); 
} 

這是我的數據共享類

public static final class DataContent implements BaseColumns{ 

    public static final Uri PROGRAM_URI = Uri.parse("content://" + AUTHORITY + "/" + PROGRAMPATH); 

    public static final String CONTENT_MORE = ContentResolver.CURSOR_DIR_BASE_TYPE + "/vnd.android.imammuda"; 
    public static final String CONTENT_ONE = ContentResolver.CURSOR_ITEM_BASE_TYPE + "/vnd.android.imammuda"; 

    public static final String KEY_PROGRAM_ID = "_id"; 
    public static final String KEY_PROGRAM_TITLE = "ProgramTitle"; 
    public static final String KEY_PROGRAM_DATE = "ProgramDate"; 
    public static final String KEY_PROGRAM_TIME = "ProgramTime"; 
    public static final String KEY_PROGRAM_CHANNEL = "ProgramChannel"; 
} 

這是我的logcat

05-12 16:05:46.024: ERROR/AndroidRuntime(5175): Caused by: java.lang.NullPointerException 
05-12 16:05:46.024: ERROR/AndroidRuntime(5175):  at com.android.imammuda.Program.createGroupList(Program.java:112) 
05-12 16:05:46.024: ERROR/AndroidRuntime(5175):  at com.android.imammuda.Program.filldata(Program.java:82) 

回答

1

您還沒有初始化您的標題變量方法createGroupLi ST:

String title[] = null; 

...

title[i] = cursor.getColumnName.... 

for循環的長度是硬編碼到最多5個,所以最簡單的解決方法是:

String[] title = new String[5]; 
+0

亞特我變了,我嘗試到getstring(0),但它返回我-1平均列doest不存在。所以我嘗試另一種方式,getcolumnindex但列存在,並返回0.我不知道爲什麼這個 – newbie 2011-05-12 09:55:58

+0

你能提供一些代碼?也許它更容易跟着你,然後 – Kennet 2011-05-12 10:05:43

+0

'遊標cursor = managedQuery(ImamShareData.DataContent.PROGRAM_URI,column,null,null,null); 'ImagShareData.DataContent.KEY_PROGRAM_TITLE,「」+ cursor.getColumnIndex(ImamShareData.DataContent.KEY_PROGRAM_TITLE)); ' 它返回我0,因爲它的第一行。然後我使用另一個函數getstring() 'title [i] = cursor.getString(0);'或 'title [i] = cursor.getString(cursor.getColumnIndex(ImamShareData.DataContent.KEY_PROGRAM_TITLE))) ;' 它給了我arrayindexoutofbound,因爲結果給了我-1意味着它不存在 – newbie 2011-05-13 02:42:07

相關問題