Java Android Studio Swictch案例实例工作不正常

Java Android Studio Swictch案例实例工作不正常,java,android,react-native-android,Java,Android,React Native Android,我一直在制作一个应用程序,它有一个导航抽屉,但导航抽屉不能与我制作的开关盒配合使用。身份证是对的 首先,这里是我的代码的简化版本: 这是我的java类: public class Image extends AppCompatActivity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mToggle; @Override protected void onCreat

我一直在制作一个应用程序,它有一个导航抽屉,但导航抽屉不能与我制作的开关盒配合使用。身份证是对的

首先,这里是我的代码的简化版本:

这是我的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 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>
以下是XML的:

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 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>
导航菜单.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>

这里是我应用抽屉的地方:

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 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_练习
案例,但显示的是
nav_提示的视图
。我单击“上一步”,然后转到练习部分。这些技巧正发挥着作用

但在练习部分,它会显示提示视图,然后当你按下“后退”键时,它会转到正确的位置。换句话说,它在某种程度上与另一个视图重叠

我做错了什么?我确信课程和身份证都在正确的地方,我已经检查了一个小时了


感谢您的帮助。多谢各位

您需要添加
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
}

你需要打破开关箱

在其他地方搜索/询问之前,应始终参考和其他在线文档。