У меня есть gridView, который отображает некоторые значки (в формате главного меню) - в зависимости от нажатой иконки, мне нужно запустить операцию. Я делаю это с помощью оператора switch.
Он отлично работает для двух моих действий, однако, когда я пытаюсь запустить третье действие, я получаю ошибку StackOverFlow.
StackTrace:
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): Uncaught handler: thread main exiting due to uncaught exception
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): java.lang.StackOverflowError
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.app.Activity.startActivityForResult(Activity.java:2749)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at com.***.NotesMainMenuActivity.startActivity(NotesMainMenuActivity.java:86)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at com.***.NotesMainMenuActivity$1.onItemClick(NotesMainMenuActivity.java:45)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.os.Handler.handleCallback(Handler.java:587)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.os.Looper.loop(Looper.java:123)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at android.app.ActivityThread.main(ActivityThread.java:4363)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at java.lang.reflect.Method.invokeNative(Native Method)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at java.lang.reflect.Method.invoke(Method.java:521)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-11 11:32:44.219: ERROR/AndroidRuntime(18842): at dalvik.system.NativeStart.main(Native Method)
StackTrace указывает, что ошибочные строки: 86 и 45.
Строка 45
Строка 45 является частью OnClickListener, где я вызываю метод, чтобы выбрать, какое действие начать:
private void setClickListenter()
{
grid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
startActivity(position); <--- Line 45
}
});
}
Строка 86
В строке 86 я создаю намерение после начала нового занятия
Intent i;
switch(position)
{
case ITEM_CLICK_NEWNOTE:
i = new Intent(this, NoteEditActivity.class);
startActivityForResult(i, ACTIVITY_CREATE);
break;
case ITEM_CLICK_VIEWNOTES:
i = new Intent(this, NotesListActivity.class);
startActivityForResult(i, VIEW_NOTES);
break;
case ITEM_CLICK_RECYCLED:
Log.w("MainMenuAdapter", "Got into Recycled Switch");
i = new Intent(this, RecycledNotesListActivity.class); <--- Line 86
startActivityForResult(i, RECYCLED_NOTES);
break;
}
Две верхние части операторов switch ITEM_CLICK_NEWNOTE и ITEM_CLICK_VIEWNOTES работают правильно - действие начинается, как и ожидалось. Только ITEM_CLICK_RECYCLED вызывает ошибку.
Основываясь на добавлении некоторых строк журнала в код в RecycledNotesListActivity.java, я не верю, что какой-либо код в этом работает. Это ломается до того.
Я запутался, потому что все три части оператора switch одинаковы, но две из них работают, а одна - нет.
Что я сделал не так?