2017-11-11 158 views
2

我一直在制作具有导航抽屉的应用程序,但该导航抽屉与我制作的开关盒不兼容。编号是正确的。Android Studio Swictch案例实例无法正常工作

对于初学者来说这里是我的代码的简化版本:

这是我的java类:

public class Image extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 
    private ActionBarDrawerToggle mToggle; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image); 

     //DRAWER LAYOUT 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
     mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close); 
     mDrawerLayout.addDrawerListener(mToggle); 
     mToggle.syncState(); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     NavigationView mNavigationView = (NavigationView) findViewById(R.id.nav_menu); 
     mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){ 
      @Override public boolean onNavigationItemSelected(MenuItem menuItem) 
      { switch (menuItem.getItemId()) 
      { 
       case(R.id.nav_account): Intent accountActivity = new Intent(getApplicationContext(), Welcome.class); 
        startActivity(accountActivity); 
       case(R.id.nav_exercises): Intent accountActivity1 = new Intent(getApplicationContext(), Video.class); 
        startActivity(accountActivity1); 
       case(R.id.nav_tips): Intent accountActivity2 = new Intent(getApplicationContext(), Image.class); 
        startActivity(accountActivity2); 
      } 
       return true; 
      }); 

     //Navigation Drawer 



} 



    //FOR NAVIGATION DRAWER 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 


     if (mToggle.onOptionsItemSelected(item)){ 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 
    //Navigation Drawer End 


} 

这里是XML的:

navigation_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/nav_account" 
     android:icon="@mipmap/ic_person_outline_black_24dp" 
     android:title="My Account" /> 

    <item android:id="@+id/nav_settings" 
     android:icon="@mipmap/ic_settings_black_24dp" 
     android:title="Settings"/> 

    <item android:id="@+id/nav_exercises" 
     android:icon="@mipmap/ic_accessibility_black_24dp" 
     android:title="Exercises"/> 

    <item android:id="@+id/nav_tips" 
     android:icon="@mipmap/ic_face_black_24dp" 
     android:title="Tips"/> 

    <item android:id="@+id/nav_scheduler" 
     android:icon="@mipmap/ic_date_range_black_24dp" 
     android:title="My Schedule"/> 

    <item android:id="@+id/nav_info" 
     android:icon="@mipmap/ic_info_outline_black_24dp" 
     android:title="Info"/> 

    <item android:id="@+id/nav_logout" 
     android:icon="@mipmap/ic_input_black_24dp" 
     android:title="Logout"/> 

</menu> 

这里就是我申请的抽屉:

<?xml version="1.0" encoding="utf-8"?> 


<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.Welcome.Video" 
    android:id="@+id/drawerLayout"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <VideoView 
     android:id="@+id/videoView" 
     android:layout_width="wrap_content" 
     android:layout_height="259dp" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="videoplay" 
     android:text="Play" /> 
</LinearLayout> 


<android.support.design.widget.NavigationView 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
app:menu="@menu/navigation_menu" 
app:headerLayout="@layout/navigation_header" 
android:layout_gravity="start" 
android:id="@+id/nav_menu" 
    > 


</android.support.design.widget.NavigationView> 


    </android.support.v4.widget.DrawerLayout> 

当导航抽屉里,我点击nav_exercises情况,但显示的内容是的应该是为nav_tips的观点发生了什么。我点击回到练习部分。 TIPS正在运行。

但是练习部分,它显示TIPS视图,然后当你按下“返回”它会去正确的地方。换句话说,它与其他观点有某种重叠。

我做错了什么?我确定班级和身份证是在正确的地方,我已经检查了一个小时。

任何帮助表示赞赏。非常感谢你!

+0

应该始终参考[官方教程]( https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html)和其他在线文档,然后再搜索/询问其他地方。 –

回答

2

需要,否则添加break;任何情况下都会被执行

switch (menuItem.getItemId()) 
{ 
    case(R.id.nav_account): Intent accountActivity = new Intent(getApplicationContext(), Welcome.class); 
     startActivity(accountActivity); 
     break; 
     //^^^ 
    case(R.id.nav_exercises): Intent accountActivity1 = new Intent(getApplicationContext(), Video.class); 
     startActivity(accountActivity1); 
     break; 
     //^^^ 
    case(R.id.nav_tips): Intent accountActivity2 = new Intent(getApplicationContext(), Image.class); 
     startActivity(accountActivity2); 
     break;// not needed at last but good practice 
} 
0

你需要打破开关罩

switch (request.getMethod()) { 
      case Method.GET: 
       ... 
       break; 
      case Method.DELETE: 
       ...  
       break; 
      case Method.POST: 
       ... 
       break; 
      case Method.PUT: 
       ... 
       break; 
      default: 
       throw new IllegalStateException("Unknown method type."); 
     } 
相关问题