2012-06-06 1 views
0

У меня есть этот код:Как дать правилу OnItemClick правильный контекст для правильной работы?

list.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Cursor cursor = databaseHelper.getAgendaToEdit(id); 
      Intent intent = new Intent(view.getContext(), EditAgendaActivity.class); 
      cursor.moveToFirst(); 
      intent.putExtra("id", cursor.getString(0)); 
      startActivity(intent); 
     } 
    }); 

и ошибки:

java.lang.InstantiationException: can't instantiate class com.zeroe.EditAgendaActivity; no empty constructor 

Целью является просто начать новую операцию при щелчке элемента в списке. Я нахожу этот метод из своего основного вида деятельности, который

list 

это также. Я предполагаю, что проблема исходит из того факта, что я не получаю контекст от того, где мой ListView. Проблема в том, что она должна работать, потому что я предоставляю правильный контекст, по крайней мере, я предполагаю. Любая помощь приветствуется.

Если кто-то нуждается в меня, чтобы уточнить, пожалуйста, дайте мне знать, и я сделаю это сразу.

ответ

2

Для ваших подклассов Activity нужен конструктор по умолчанию. Очевидно, EditAgendaActivity не имеет. Вот в чем проблема, а не в коде, который вы опубликовали.

Как правило, у вас должен быть только конструктор по умолчанию (no-arg) для подкласса Activity или вообще никакого конструктора (и пусть компилятор генерирует для вас конструктор no-arg).

+0

Хм, Но это не имеет смысла для меня, только потому, что я вызвал другое действие с конструктором через намерение. В любом случае, я думал, что расширение класса Activity всегда должно иметь конструктор Bundle, то есть мне нужен конструктор. Любые объяснения по этому поводу? – Andy

+0

Подождите! Кажется, я понял, что я сделал неправильно. Дай мне секунду – Andy

+1

Черт, ок, это была глупая ошибка. Вы правы. Я ошибочно сделал мой конструктор onCreate. Я извиняюсь за это и ценю знания в понимании этого факта. Спасибо! – Andy