希望使用片段从导航抽屉活动移至另一个屏幕以在所有屏幕上显示抽屉

乌默·法鲁克(Umer Farooq)

我正在尝试过去两天,在我的抽屉活动旁边添加片段,以使导航抽屉在整个应用程序中可见。我已经尝试了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();

        }
    });

}

第一片段类:

public class FragOne extends Fragment {

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

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

//第二个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);
}
阿迪亚(Aditya S.)

只需完成此任务,您就必须重写onNavigationItemSelected方法Activity,该方法在上返回选定片段的ID NavigationDrawer

试试这个,

@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);
}

编辑-如果要从导航FragOneFragTwo试试这个,

在中创建一个方法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要启动时FragTwostartFragTwoActivityas调用方法

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在所有活动中显示导航抽屉?

Android:所有活动上的导航抽屉

打开另一个活动并返回后,导航抽屉主屏幕按钮无法打开抽屉

如何在Flutter中从一个屏幕导航到另一个屏幕(开始活动)并关闭当前屏幕(完成)

在另一个屏幕显示4秒后显示一个屏幕

在一个屏幕上反应Native两个抽屉

想要从导航抽屉移至另一个活动

导航抽屉用另一个有问题的片段替换了抽屉选项

反应导航:如何在所有屏幕中显示导航抽屉?

抽屉导航器-添加屏幕而不在抽屉中显示

导航到另一个屏幕时,为什么仍显示“底部标签”?

我如何使用道具在本机反应中从一个屏幕导航到另一个屏幕?

Libgdx:设置另一个屏幕,但旧屏幕上的按钮仍处于活动状态

在另一个X屏幕上的X窗口中显示现有X屏幕

从通知抽屉执行操作会生成另一个已经运行的活动实例

使用导航抽屉时,后备箱中只有一个片段

片段未使用导航抽屉显示

从图库中选取图像,然后将其加载到特定活动的imageview中,并加载到另一个活动的导航抽屉imageview中

带有抽屉导航的Android主页按钮停止与旋转屏幕一起使用

在另一个活动中打开导航抽屉菜单

如何在另一个活动中从uri设置导航抽屉查看器的图像

保存一个平面列表中的 params 导航,并将其显示在另一个屏幕上

带有 recyclerview 片段调用另一个片段的导航抽屉

如何导航到另一个屏幕

所有活动的导航抽屉 - 我的应用程序未将地图显示为抽屉中的活动

我有一个导航抽屉,想打开另一个孤立的片段

Vuetify:我的导航抽屉位于另一个元素(工具栏)上

使用默认导航抽屉活动模板替换另一个片段

如果导航到 Flutter 上的另一个屏幕,则停止计时器