Java 使用导航抽屉显示片段
我不知道如何通过单击导航抽屉中的一个项目来打开不同的片段 在MainActivity中,我使用以下代码:Java 使用导航抽屉显示片段,java,android,xml,fragment,Java,Android,Xml,Fragment,我不知道如何通过单击导航抽屉中的一个项目来打开不同的片段 在MainActivity中,我使用以下代码: @SuppressWarnings(“StatementWithEmptyBody”) @凌驾 公共布尔值onNavigationItemSelected(MenuItem项){ 片段; int id=item.getItemId(); if(id==R.id.nav_列表视图){ FragmentTransaction ft=getSupportFragmentManager().beg
@SuppressWarnings(“StatementWithEmptyBody”)
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
片段;
int id=item.getItemId();
if(id==R.id.nav_列表视图){
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment,new listframent());
ft.commit();
}else if(id==R.id.nav\u添加数据){
}else if(id==R.id.nav_设置){
}else if(id==R.id.nav_法律信息){
}
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉。关闭抽屉(重力压缩机启动);
返回true;
}
试试这段代码
@SuppressWarnings(“StatementWithEmptyBody”)
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
片段=空;
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
int id=item.getItemId();
if(id==R.id.nav_列表视图){
fragment=新的ListFragment();
}else if(id==R.id.nav\u添加数据){
}else if(id==R.id.nav_设置){
}else if(id==R.id.nav_法律信息){
}
ft.替换(R.id.容器、碎片);
ft.addToBackStack(空);
ft.commit();
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉。关闭抽屉(重力压缩机启动);
返回true;
}
试试这段代码
@SuppressWarnings(“StatementWithEmptyBody”)
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
片段=空;
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
int id=item.getItemId();
if(id==R.id.nav_列表视图){
fragment=新的ListFragment();
}else if(id==R.id.nav\u添加数据){
}else if(id==R.id.nav_设置){
}else if(id==R.id.nav_法律信息){
}
ft.替换(R.id.容器、碎片);
ft.addToBackStack(空);
ft.commit();
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉。关闭抽屉(重力压缩机启动);
返回true;
}
试试这段代码
@SuppressWarnings(“StatementWithEmptyBody”)
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
片段=空;
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
int id=item.getItemId();
if(id==R.id.nav_列表视图){
fragment=新的ListFragment();
}else if(id==R.id.nav\u添加数据){
}else if(id==R.id.nav_设置){
}else if(id==R.id.nav_法律信息){
}
ft.替换(R.id.容器、碎片);
ft.addToBackStack(空);
ft.commit();
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉。关闭抽屉(重力压缩机启动);
返回true;
}
试试这段代码
@SuppressWarnings(“StatementWithEmptyBody”)
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
片段=空;
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
int id=item.getItemId();
if(id==R.id.nav_列表视图){
fragment=新的ListFragment();
}else if(id==R.id.nav\u添加数据){
}else if(id==R.id.nav_设置){
}else if(id==R.id.nav_法律信息){
}
ft.替换(R.id.容器、碎片);
ft.addToBackStack(空);
ft.commit();
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉。关闭抽屉(重力压缩机启动);
返回true;
}
Mhmm我找到了答案。但是我很困惑。
如果我使用:
if(id==R.id.nav\u列表视图){
fragment=new com.thomas.testapp.ListFragment();
Mhmm我找到了答案。但我感到困惑。
如果我使用:
if(id==R.id.nav\u列表视图){
fragment=new com.thomas.testapp.ListFragment();
Mhmm我找到了答案。但我感到困惑。
如果我使用:
if(id==R.id.nav\u列表视图){
fragment=new com.thomas.testapp.ListFragment();
Mhmm我找到了答案。但我感到困惑。
如果我使用:
if(id==R.id.nav\u列表视图){
fragment=new com.thomas.testapp.ListFragment();
请更改片段类ListFragment的名称,因为ListFragment已经是android.app中片段的子类软件包android操作系统请更改片段类ListFragment的名称,因为ListFragment已经是android.app中片段的子类packageandroid OS请更改片段类ListFragment的名称,因为ListFragment已经是android中片段的子类。apppackageandroid OS请更改片段类ListFragment的名称,因为ListFragment已经是中片段的子类android.app软件包android操作系统我建议创建更动态的代码
首先,如果您有自定义类来创建导航抽屉,请使用侦听器从活动中调用方法
有一个类调用HomeFragment extends Fragment,因此我们有:
if(condition){
fragment = new HomeFragment();
// if there is Listener
if(mListener != null){
mListener.someMethod
}
// Other Settings And Codes
}
我建议创建更动态的代码 首先,如果您有自定义类来创建导航抽屉,请使用侦听器从活动中调用方法 有一个类调用HomeFragment extends Fragment,因此我们有:
if(condition){
fragment = new HomeFragment();
// if there is Listener
if(mListener != null){
mListener.someMethod
}
// Other Settings And Codes
}
我建议创建更动态的代码 首先,如果您有自定义类来创建导航抽屉,请使用侦听器从活动中调用方法 有一个类调用HomeFragment extends Fragment,因此我们有:
if(condition){
fragment = new HomeFragment();
// if there is Listener
if(mListener != null){
mListener.someMethod
}
// Other Settings And Codes
}
我建议创建代码M
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, FragmentOne.OnFragmentInteractionListener ,FragmentTwo.OnFragmentInteractionListener,FragmentThree.OnFragmentInteractionListener {
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
Fragment fragment = null;
Class fragmentClass = null;
if (id == R.id.nav_camera) {
fragmentClass = FragmentOne.class;
} else if (id == R.id.nav_gallery) {
fragmentClass = FragmentTwo.class;
} else if (id == R.id.nav_slideshow) {
fragmentClass = FragmentThree.class;
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
protected void onCreate(Bundle savedInstanceState) {
...
if (savedInstanceState == null) {
//Fragment load code
}
...
}
public class MainActivity extends AppCompatActivity {
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...From section above...
// Find our drawer view
nvDrawer = (NavigationView) findViewById(R.id.nvView);
// Setup drawer view
setupDrawerContent(nvDrawer);
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
selectDrawerItem(menuItem);
return true;
}
});
}
public void selectDrawerItem(MenuItem menuItem) {
// Create a new fragment and specify the fragment to show based on nav item clicked
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.nav_first_fragment:
fragmentClass = FirstFragment.class;
break;
case R.id.nav_second_fragment:
fragmentClass = SecondFragment.class;
break;
case R.id.nav_third_fragment:
fragmentClass = ThirdFragment.class;
break;
default:
fragmentClass = FirstFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
// Highlight the selected item has been done by NavigationView
menuItem.setChecked(true);
// Set action bar title
setTitle(menuItem.getTitle());
// Close the navigation drawer
mDrawer.closeDrawers();
}
// ...