android - 当我点击常见问题或关于我们时,屏幕仍在设置片段上
问题描述
所以我正在尝试为一个大学项目制作一个应用程序,但我的代码中有些东西不能正常工作,所以我制作了一个菜单侧边栏,并带有一些分隔符,如个人资料、事件、关于我们、常见问题解答、设置、共享和登出
侧边栏
所以我创建了一些片段
碎片
但是现在当我单击关于我们或常见问题解答时,我对关于我们和常见问题解答的片段有问题,它转到设置片段,我不知道为什么?有人可以帮助我吗?
MainActivity.Java
package com.example.readytogo;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Switch;
import android.widget.Toast;
import com.google.android.material.navigation.NavigationView;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView =findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
navigationView.setCheckedItem(R.id.nav_profile);
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.nav_profile:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
break;
case R.id.nav_events:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new EventsFragment()).commit();
case R.id.nav_aboutus:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new AboutUsFragment()).commit();
break;
case R.id.nav_faq:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new FAQFragment()).commit();
break;
case R.id.nav_settings:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new SettingsFragment()).commit();
break;
case R.id.nav_share:
Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_logout:
Toast.makeText(this, "Logout", Toast.LENGTH_SHORT).show();
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed(){
if (drawer.isDrawerOpen(GravityCompat.START)){
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
}
抽屉菜单.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="Navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_profile"
android:icon="@drawable/ic_person"
android:title="Profile" />
<item
android:id="@+id/nav_events"
android:icon="@drawable/ic_event"
android:title="Events" />
<item
android:id="@+id/nav_aboutus"
android:icon="@mipmap/aboutus"
android:title="About us" />
<item
android:id="@+id/nav_faq"
android:icon="@mipmap/faq"
android:title="FAQ" />
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="Settings" />
</group>
<item android:title="Communicate">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_share"
android:title="Share" />
</menu>
</item>
<item android:title="Sign in">
<menu>
<item
android:id="@+id/nav_logout"
android:icon="@mipmap/arrow"
android:title="Log out" />
</menu>
</item>
</menu>
解决方案
您错过了常见问题解答和关于我们页面的点击事件。你需要添加..
case R.id.nav_faq: // the id will be the one you are using in your xml
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new FAQFragment()).commit();
break;
case R.id.nav_about_us: // the id will be the one you are using in your xml
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new AboutUsFragment()).commit();
break;
将它们添加到您添加其他事件的位置。
推荐阅读
- postgresql - 解析 SQL 查询字符串 PostgreSQL 时出错?
- python - 对 DataFrame 的数组操作
- javascript - 加载后如何显示svg图像?
- reactjs - 为反应原生应用程序集成消息中心的问题
- mysql - 从另一个表中不存在值的表中删除
- java - Java无法识别空格后的特殊字符
- android - Android Studio - 我看不到我在 ScrollView 中制作的元素,为什么?
- php - Wordpress 在自定义新闻页面中不断重复帖子
- cypress - Replicate "Run all specs" cypress test runner functionality via command line
- python - How can I plot figures from pandas series in different windows?