我有一个显示一些图标的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语句的所有三个部分都是相同的,但是两个工作,一个不工作。
我做错了什么?