Android:StartActivityForResult导致StackOverFlow错误

时间:2011-07-10 23:50:59

标签: android listactivity stack-overflow

我有一个显示一些图标的gridView(以主菜单格式) - 基于按下的图标,我需要启动一个活动。我正在使用switch语句执行此操作。

它适用于我的两个活动,但是当我尝试启动第三个活动时,我得到一个StackOverFlow错误。

堆栈跟踪:

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语句的所有三个部分都是相同的,但是两个工作,一个不工作。

我做错了什么?

0 个答案:

没有答案