Android: StartActivityForResult вызывает ошибку StackOverFlow - PullRequest
1 голос
/ 11 июля 2011

У меня есть 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 одинаковы, но две из них работают, а одна - нет.

Что я сделал не так?

...