2014-02-20 36 views
1

我刚刚创建了滑动菜单,但是当我按下菜单中的项目时,他们没有打开我设置的活动。这是我对onItemClick方法的代码:如何从滑动菜单中点击项目点击新活动?

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    // Highlight the selected item, update the title, and close the drawer 
    // update selected item and title, then close the drawer 
    mDrawerList.setItemChecked(position, true);   
    //You should reset item counter 
    mDrawer.closeDrawer(mDrawerList); 
    if (position == 1) { 
     Intent intent = new Intent(MainActivity.this, PrimActivitate.class); 
     startActivity(intent); 
     mDrawer.closeDrawers(); 
     if (position == 2) { 
      Intent intent2 = new Intent(MainActivity.this, Profesori.class); 
      startActivity(intent2); 
      mDrawer.closeDrawers(); 
     } 

的问题是:当我按下第一个项目,它崩溃的应用程序,当我按下第二个它没有做任何事情..

编辑:

02-20 15:27:43.991: E/AndroidRuntime(1278): FATAL EXCEPTION: main 
02-20 15:27:43.991: E/AndroidRuntime(1278): Process: com.orar.cngcnasaud, PID: 1278 
02-20 15:27:43.991: E/AndroidRuntime(1278): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.orar.cngcnasaud/com.orar.cngcnasaud.PrimActivitate}; have you declared this activity in your AndroidManifest.xml? 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.Activity.startActivityForResult(Activity.java:3424) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.Activity.startActivityForResult(Activity.java:3385) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.Activity.startActivity(Activity.java:3627) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.Activity.startActivity(Activity.java:3595) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at com.orar.cngcnasaud.MainActivity$DrawerItemClickListener.onItemClick(MainActivity.java:179) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.widget.AdapterView.performItemClick(AdapterView.java:299) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.widget.AbsListView$3.run(AbsListView.java:3638) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.os.Handler.handleCallback(Handler.java:733) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.os.Handler.dispatchMessage(Handler.java:95) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.os.Looper.loop(Looper.java:136) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
02-20 15:27:43.991: E/AndroidRuntime(1278):  at dalvik.system.NativeStart.main(Native Method) 
+0

请显示错误的logcat。 – Melquiades

+0

当按第二个键时,它不会执行任何操作,因为开始第二个活动的代码是INSIDE第一个条件。 – Melquiades

+0

我编辑了第一篇文章! – Ezekiel

回答

1

这从来不去位置== 2,因为我看到的,如果接近(位置== 1)如果之前(位置== 2),尝试:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    mDrawerList.setItemChecked(position, true);   
    mDrawer.closeDrawer(mDrawerList); 
    if (position == 1) { 
     Intent intent = new Intent(MainActivity.this, PrimActivitate.class); 
     MainActivity.this.startActivity(intent); 
     mDrawer.closeDrawers(); 
     } 
    if (position == 2) { 
     Intent intent2 = new Intent(MainActivity.this, Profesori.class); 
     MainActivity.this.startActivity(intent2); 
     mDrawer.closeDrawers(); 
     } 

} 

关于你忘了加上崩溃AndroidManifest.xml

<activity android:label="@string/app_name" android:name="com.orar.cngcnasaud.PrimActivitate"/> 
<activity android:label="@string/app_name" android:name="com.orar.cngcnasaud.Profesori"/> 
+0

同样的事情..同名的错误。 – Ezekiel

+0

PrimActivitate和Profesori是否扩展活动?或者那些在diffirent软件包中,你必须在你的AndroidManifest中编辑所有软件包名称编辑 – Smile2Life

+0

是的,他们确实..我做到了。非常感谢 ! – Ezekiel

1

当您按下第二项onItemClick()时什么都不做,因为 if(position == 2) 在 if(position == 1)之内。

你可以发布崩溃堆栈跟踪吗?

+0

请使用上述对OP的回应的评论或修改您的回答。 – Melquiades

+0

我无法在第一时间添加评论,因为我没有50的声望:-(。无论如何感谢您的建议 – karthikk

+0

只要记住将来,低质量的答案越来越downvotes :)如果你想澄清或来自OP的额外信息,请使用评论。祝你好运 – Melquiades

1

由于您的logcat建议,您尚未在清单中声明您的PrimActivitate。这些添加到您的AndroidManifest:

<activity android:name=".PrimActivitate"></activity> 

添加第二个,以及如果不是有:

<activity android:name=".Profesori"></activity> 

接下来,以外的第一移动你的第二个条件,这样既您的情况可以处理:

if (position == 1) { 
    Intent intent = new Intent(MainActivity.this, PrimActivitate.class); 
    startActivity(intent); 
    mDrawer.closeDrawers(); 
} 
else if (position == 2) { 
    Intent intent2 = new Intent(MainActivity.this, Profesori.class); 
    startActivity(intent2); 
    mDrawer.closeDrawers(); 
} 
+0

它的工作..你是最好的球员。非常感谢 ! – Ezekiel

相关问题