2014-05-23 43 views
-1

我已經嘗試寫入數據庫並讀取它們並將它們加載到ArrayList,然後列表中的元素應該被添加到AutoCompleteTextView,但它似乎顯示爲NullPointerException插入數據庫和讀取數據庫後出現空指針異常

這是代碼。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    tweetPost = new Tweet(); 
     setIssueTypeToDatabase("Accident"); 
     setIssueTypeToDatabase("Fire"); 
     setIssueTypeToDatabase("Local Utility Problem"); 
     setIssueTypeToDatabase("Theft"); 
     setIssueTypeToDatabase("Technological Problem"); 


    postBox = (EditText) findViewById(R.id.post); 
    log.debug(postBox); 
    issue = (AutoCompleteTextView) findViewById(R.id.autocomplete_issue); 
    log.debug(issue); 
    setIssueTypeFromDatabaseToList(); 
    adapterA = new ArrayAdapter(this, 
      android.R.layout.simple_list_item_1, IssueTypeList); 

    issue.setAdapter(adapterA); 
    } 


private void setIssueTypeToDatabase(String issue) { 
    SQLiteDatabase db = issueTypeDatabase.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(IssueTypeDatabase.C_Issue, issue); 
    db.insertOrThrow(IssueTypeDatabase.TABLE, null, values); 

} 

private void setIssueTypeFromDatabaseToList() { 
    SQLiteDatabase db = issueTypeDatabase.getReadableDatabase(); 
    Cursor cursor = db.query(IssueTypeDatabase.TABLE, FROM, null, null, null, null, 
      ORDER_BY); 
    startManagingCursor(cursor); 
    showEvents(cursor); 
} 

private void showEvents(Cursor cursor) { 
    log.debug("showEvents()"); 
    // Stuff them all into a big string 
    setContentView(R.layout.database); 
    while (cursor.moveToNext()) { 
     // Could use getColumnIndexOrThrow() to get indexes 
     issueTypesFound = cursor.getString(1); 

     IssueTypeList.add(issueTypesFound); 


    } 
    cursor.close(); 
} 


    public class IssueTypeDatabase extends SQLiteOpenHelper{ 


    // Static Final Variable database meta information 

    static final String DATABASE = "IssueType.db"; 
    static final int VERSION =4; 
    public static final String TABLE = "IssueTypeTable"; 
    static final String TABLE_DEPT = "Issue_Dept"; 

    public static final String C_ID = "_id"; 
    public static final String C_Issue = "issue"; 

    private static final Logger log = Logger.getLogger(IssueTypeDatabase.class); 
    // Override constructor 
    public IssueTypeDatabase(Context context) { 

     super(context, DATABASE, null, VERSION); 
     log.debug("IssueTypeDatabse()"); 

    } 

    // Override onCreate method 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     log.debug("onCreate()"); 
     db.execSQL("CREATE TABLE " + TABLE + " (" + C_ID 
       + " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_Issue + " TEXT"+");"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     log.debug("onUpgrade()>>SQLiteDatabase={}",DATABASE); 
     // Drop old version table 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE); 

     // Create New Version table 
     onCreate(db); 
    } 
} 

和日誌:

Log

+0

我在這裏也看到,你有一個startManagingCursor和一個cursor.close()在同一個遊標上,這些不應該一起使用,我不認爲。 –

+0

Thanx,我刪除了cursor.close()並將其修改了一下,它工作:) – KKGanguly

回答

1

我終於發現了什麼是錯誤,cursor.close()是造成問題,再次我又愚蠢的錯誤,我設置佈局在我的showEvents()方法中,導致屏幕快速更改。 ,所以刪除cursor.close()和setContentView(R.layout.database)做了訣竅。

相關問題