想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉(代码片段)

author author     2022-12-29     695

关键词:

我正在尝试最后两天在我的抽屉活动旁边添加片段,以便在整个应用程序中看到导航抽屉。我已尝试过stackoverflow和其他许多方法,但仍然没有成功。然后我必须从第一个片段移动到第二个片段,依此类推,直到需要导航抽屉。当我从我的活动移动到任何片段时,我想替换除抽屉之外的整个视图。每个片段都有自己的layout.xml,就像一个活动(线性/相对布局作为父级)。

抽屉活动:

 public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener 

@Override
protected void onCreate(final Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        
    );

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    Button btnfragOne = (Button) findViewById(R.id.btnfrag_one);
    btnfragOne.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 

            FragOne fragment = new FragOne();
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.frag2, fragment, fragment.getClass().getSimpleName()).addToBackStack(null).commit();

        
    );


1st Fragment类:

public class FragOne extends Fragment 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 

    return inflater.inflate(R.layout.frag_one, container, false);

// 2nd Fragment类:

public class FragTwo extends Fragment 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 

    return inflater.inflate(R.layout.frag_two, container, false);

答案

只需执行此任务,您必须覆盖onNavigationItemSelected中的Activity方法,该方法返回NavigationDrawer上所选片段的id。

试试这个,

@Override
public boolean onNavigationItemSelected(MenuItem item) 

    //calling the method displayselectedscreen and passing the id of selected menu

    displaySelectedFragment(item.getItemId());

    return true;

现在displaySelectedFragment

private void displaySelectedScreen(int itemId) 

    //creating fragment object
    Fragment fragment = null;

    //initializing the fragment object which is selected
    switch (itemId) 

        case R.id.your_fragment_one_id:
            fragment = new FragOne();
            break;

        case R.id.your_fragment_two_id:
            fragment = new FragTwo();
            break;
    

    //replacing the fragment
    if (fragment != null) 
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.main_layout_id_which_is_to_be_replace, fragment);
        ft.commit();
    

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.your_drawer_layout_id);
    drawer.closeDrawer(GravityCompat.START);

编辑 - 如果你想从FragOne导航到FragTwo。试试这个,

在你的Activity中创建一个方法,

public void showFragTwo()

    FragmentManager manager = getSupportFragmentManager();
    FragTwo frag = new FragTwo();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.replace(R.id.your_layout_id_which_is_to_be_replace, frag);
    transaction.commit();


然后在你的FragOne当你想要启动FragTwo时,从startFragTwo调用Activity方法,

((YourActivity)  getActivity()).showFragTwo();

如何从一个屏幕导航到另一个屏幕

】如何从一个屏幕导航到另一个屏幕【英文标题】:Howtonavigatefromonescreentoanotherscreen【发布时间】:2010-11-0906:41:03【问题描述】:如何从一个活动屏幕导航到另一个活动屏幕?在第一个屏幕中,如果我单击必须移动到另一个活动... 查看详情

导航抽屉异步任务

...问题,我想知道如何解决它。在我的应用程序中,我正在使用一个活动,进行简单的登录,启动一个asyncTask。在这个任务结束时,用户被重定向到另一个活动,这是应用程序的主活动。后者的任务是管理导航抽屉及其片段。每个... 查看详情

使用 NavController 从片段导航到另一个片段

】使用NavController从片段导航到另一个片段【英文标题】:NavigatefromfragmenttoanotherusingNavController【发布时间】:2021-05-0220:21:42【问题描述】:我正在尝试应用我看到的关于带有片段和MVVM“新组件”的导航抽屉活动的课程,在这个... 查看详情

使用导航组件从一个活动导航到另一个活动

】使用导航组件从一个活动导航到另一个活动【英文标题】:NavigatefromoneactivitytoanotherwithNavigationComponent【发布时间】:2020-09-2414:40:29【问题描述】:我正在尝试从一个导航图(主机片段位于LoginActivity)导航到另一个导航图(主... 查看详情

使用抽屉导航在反应本机导航中导航时屏幕冻结

】使用抽屉导航在反应本机导航中导航时屏幕冻结【英文标题】:ScreenfreezewhennavigateinreactnativenavigationwithDrawernavigation【发布时间】:2021-04-2711:23:58【问题描述】:我在ReactNativeNavigation中遇到了抽屉导航问题。问题似乎很简单。... 查看详情

如何将活动转换为片段以在抽屉中使用

】如何将活动转换为片段以在抽屉中使用【英文标题】:Howtoconvertactivitiestofragmentstouseindrawer【发布时间】:2014-10-1214:23:22【问题描述】:我打算将我的应用程序中的活动转换为片段以实现抽屉。但我以前从未使用过片段,它们... 查看详情

使用 NavController 从一个活动导航到另一个活动

】使用NavController从一个活动导航到另一个活动【英文标题】:NavigatefromoneactivitytoanotherwithaNavController【发布时间】:2021-09-1223:01:32【问题描述】:我有两项活动,一项使用导航图,另一项不使用。如何从不使用NavController的活动... 查看详情

如何在不使用片段的情况下访问所有活动中的导航抽屉?

】如何在不使用片段的情况下访问所有活动中的导航抽屉?【英文标题】:Howtoaccessnavigationdrawerinallactivitieswithoutusingfragments?【发布时间】:2014-03-2907:27:47【问题描述】:我想在所有活动中访问导航抽屉。我不想使用片段。相反... 查看详情

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中

...建导航抽屉。我想隐藏/删除下一个片段中的工具栏。我想要没有工具栏的完整空片段。但是每当我尝试 查看详情

如何在导航抽屉中的两个片段之间传递数据

】如何在导航抽屉中的两个片段之间传递数据【英文标题】:Howtocommunicatedatabetweentwofragmentsinanavigationdrawer【发布时间】:2014-05-2420:20:17【问题描述】:我有一个包含不同片段的导航抽屉(每个项目显示一个片段),我想将数据... 查看详情

导航抽屉和工具栏出现在初始屏幕中

...screen【发布时间】:2020-01-3102:20:18【问题描述】:我正在使用带有导航抽屉和工具栏以及启动屏幕的喷气背包导航构建应用程序。我将启动画面片段设置为入口目的地。但是,当启动画面启动时,抽屉和工具栏会出现在屏幕上。... 查看详情

如何使用安全参数将数据从导航抽屉传递到活动?

】如何使用安全参数将数据从导航抽屉传递到活动?【英文标题】:HowtopassdatafromthenavigationdrawertoActivityusingsafe-args?【发布时间】:2019-10-0621:34:34【问题描述】:假设我们有一个这样的项目:classMainActivity:AppCompatActivity()privatelatein... 查看详情

使用继承的活动导航抽屉实现

】使用继承的活动导航抽屉实现【英文标题】:Navigationdrawerimplementationwithactivitiesusinginheritance【发布时间】:2016-05-2015:35:15【问题描述】:在我的应用程序中,我必须对所有活动使用导航抽屉。所以我创建了一个名为DrawerActivity... 查看详情

在 Android 中使用片段时处理后按

】在Android中使用片段时处理后按【英文标题】:HandlingbackpresswhenusingfragmentsinAndroid【发布时间】:2014-04-2811:28:14【问题描述】:我在我的应用程序中使用带有导航抽屉的Android滑动菜单,并且在应用程序中使用片段而不是活动。... 查看详情

将一个片段调用到另一个片段时更改标题textview(代码片段)

...。因此,对于导航抽屉菜单选项,我为每个选项创建一个片段,它运行良好...在我的主要活动中,我将TabFragment(包含fragment_1或fragment_2)充气为UI,在Fragment_1上有一个Button,当我点击按钮时我想打开导航抽屉片段....我的导航抽... 查看详情

使用导航从一个片段导航到另一个片段后,防止后按工作

...使用导航组件和导航图从一个片段导航到另一个片段,我想要完全防止onBackPressed,这样当用户单击onBack时,应用程序将退出。我正 查看详情

如何实现一个滑动整个活动内容的 Android 导航抽屉?

...前致谢。***---------解决方案--------*:**我找到了解决方案。使用这个库很容易使用和 查看详情

在某些片段中隐藏导航抽屉

】在某些片段中隐藏导航抽屉【英文标题】:HideNavigationDrawerincertainFragments【发布时间】:2020-12-2917:17:34【问题描述】:我构建了一个具有登录屏幕和主屏幕的应用程序。我遵循单一活动设计原则。我已经实现了这样的导航抽屉... 查看详情