您好我開始在android(在eclipse中)編寫一個ToDo-List,它與Google Tasks同步並添加Google帳戶中的任務。 我實現了一個非常簡單的數據庫(根據本教程:SQLITE Tutorial)。 該項目包含一個活動,它只實現了一個listView和一個允許它添加任務的按鈕(父活動) 通過單擊按鈕,通過「startActivityForResult」啓動一個新的活動,您可以輸入一個名稱和一個類別。 (子活動) 然後這兩個字符串被傳遞給父活動並添加到數據庫中,該數據庫在父活動中初始化 現在,應該創建listview並設置simpleCursorAdapter;這就是應用程序崩潰的地方,在模擬器上和我的android手持設備上。 繼承人的啓動活動的代碼片段:Android:SimpleCursorAdapter&ListView
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initDB();
initUI();
}
public void initUI()
{
Log.w(TAG, "initUI()");
populateToDoList();
listView = (ListView) findViewById(R.id.tasklist);
addButton = (Button) findViewById(R.id.addTask);
addButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
Intent i = new Intent(RememberMe.this, AddTask.class);
startActivityForResult(i, REQUEST_CODE);
} });
}
public void initDB()
{
toDoDBAdapter = new ToDoDBAdapter(RememberMe.this);
toDoDBAdapter.open();
}
private void populateToDoList()
{
Log.w(TAG, "populateToDoList()");
dbCursor = toDoDBAdapter.getAllToDoItemsCursor();
Log.w(TAG, "getAllToDoItemsCursor()");
startManagingCursor(dbCursor);
Log.w(TAG, "startManagingCursor()");
String [] columns = { ToDoDBAdapter.KEY_NAME};
int [] to = { android.R.id.text1 };
Log.w(TAG, "Sring from int to");
simpleCursor = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, dbCursor, columns, to);
Log.w(TAG, "new SimpleCursorAdapter()");
listView.setAdapter(simpleCursor);
Log.w(TAG, "setAdapter()");
simpleCursor.notifyDataSetChanged();
}
private void updateList()
{
dbCursor.requery();
simpleCursor.notifyDataSetChanged();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode == REQUEST_CODE)
{
String taskName = data.getStringExtra("taskName");
String taskCategory = data.getStringExtra("taskCategory");
toDoDBAdapter.createTask(taskName, taskCategory);
updateList();
Toast.makeText(this, "Aufgabe hinzugefügt", Toast.LENGTH_LONG).show();
}
}
@Override
public void onDestroy()
{
super.onDestroy();
toDoDBAdapter.close();
}
}
它停在
listView.setAdapter(simpleCursor);
Log.w(TAG, "setAdapter()");
我不知道爲什麼還是出了什麼問題;我讀了有64位系統上與模擬器的問題,但該代碼好好嘗試一下無論是在我的方便和實施的列表視圖和設置simpleCursor不應該是如此棘手吳 繼承人工作的logcat: LogCat
嘗試調用populateToDoList()中使用的函數的結果 – 2011-11-18 20:25:51