gpt4 book ai didi

java - Android Studio Swictch-case 实例无法正常工作

转载 作者:搜寻专家 更新时间:2023-11-01 09:31:08 25 4
gpt4 key购买 nike

我一直在制作一个带有抽屉导航的应用程序,但该抽屉导航无法与我制作的开关盒一起使用。 id是对的

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

这是我的 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 的 View 。我单击后退,然后转到练习部分。 TIPS 照原样运作。

但是练习部分,它显示 TIPS View ,然后当您按“后退”时,它会转到正确的位置。换句话说,它以某种方式与另一个 View 重叠。

我做错了什么?我确定类和 ID 位于正确的位置,我真的检查了一个小时。

感谢任何帮助。非常感谢!

最佳答案

你需要添加break;否则每个case都会被执行

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
}

关于java - Android Studio Swictch-case 实例无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47234979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com