Привет, я начал программировать список дел на Android (в eclipse), который синхронизируется с задачами Google и добавляет задачи из вашей учетной записи Google. Я реализовал действительно простую базу данных (согласно этому руководству: Учебное пособие по SQLITE). Проект содержит одно действие, которое реализует только listView и кнопку, которая позволяет ему добавлять задачи (родительское действие). При нажатии кнопки запускается новое действие через «startActivityForResult», и вы можете ввести имя и категорию (дочерний элемент). Activity) Затем эти две строки передаются в родительское действие и добавляются в базу данных, которая инициализируется в родительском действии. Теперь нужно создать список и установить SimpleCursorAdapter; это момент, когда приложение вылетает, на эмуляторе и на моем андроиде удобно. Вот фрагмент кода стартовой активности:
@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-битной системе, но код не работает ни на моем удобном, ни на моем удобном, и реализация списков и установка простого курсора не должны быть такими сложными O.o Вот логарифм: LogCat