简体   繁体   English

Android:检查活动中的当前片段

[英]Android : check current fragment in activity

I tried to check current Fragment in my Activity, This is scheme of my Fragment in my Activity : When user open Fragment A in Activity, then they click button in Fragment A , it will open Fragment B , we can't directly open fragment B from Activity 我试图检查我的活动中的当前Fragment ,这是我的活动中的Fragment方案:当用户在活动中打开Fragment A时,他们单击Fragment A按钮,它将打开Fragment B ,我们无法直接打开fragment B来自活动

I know I can check it using this code : 我知道我可以使用以下代码进行检查:

Fragment fragment = getFragmentManager().findFragmentByTag("MY FRAGMENT");
if (fragment !=null & fragment.isVisible()){
//do whatever we do
}

Or with this code : 或使用此代码:

Fragment fragment = getFragmentManager().findFragmentById(R.id.container_body);
    if (fragment !=null & fragment.isVisible()){
    //do whatever we do
    }

but I still confuse where I must to put this code in in activity? 但是我仍然困惑我必须在何处放置此代码? I have put this in OnCreate method, but nothing happen 我把它放在OnCreate方法中,但是什么也没发生

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(mToolbar);
            getSupportActionBar().setDisplayShowHomeEnabled(true);

        if (Build.VERSION.SDK_INT >= 21) {
            mToolbar.setPadding(0, getStatusBarHeight(), 0, 0);
        }
        mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                search.setMenuVisibility(View.VISIBLE);
                    openSearch();
                    return true;
                }
            });

        drawerFragment = (MethodFragmentDrawer)getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
            drawerFragment.setDrawerListener(this);
            drawerFragment.setUp(R.id.fragment_navigation_drawer, drawerLayout, mToolbar);


        search = (SearchBox) findViewById(R.id.searchbox);
        search.setPadding(10, getStatusBarHeight(), 10, 0);
            search.setLogoText("E-Sehat");
            search.setMenuListener(new SearchBox.MenuListener() {
                @Override
                public void onMenuClick() {
                    drawerFragment.setButtonHamburgerClick();
                }

            });
        //display first Fragment
        displayView(0);
   Fragment fragment = getFragmentManager().findFragmentByTag("MY FRAGMENT");
    if (fragment !=null & fragment.isVisible()){
    //do whatever we do
    }

    }

Well.. is there somebody can help me to solve my problem? 好吧..有人可以帮助我解决我的问题吗? thank you very much. 非常感谢你。

The best way to go from one fragment to another is through an Activity. 从一个片段到另一个片段的最佳方法是通过活动。 Below is a code snippet that i use whenever i go from one fragment to another: 下面是我从一个片段到另一个片段时都使用的代码片段:

In YourActivity(which acts as a container for fragments) have a method like the one below: 在YourActivity(充当片段的容器)中,有一种类似于以下方法的方法:

public Fragment fragment;
public void navigateTo(Fragment newFragment,boolean addToBackStack) {
    this.fragment = newFragment;
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();
    ft.replace(R.id.fragment_container, newFragment);
    if(addToBackStack)
        ft.addToBackStack(fragment.getClass().getSimpleName());
    ft.commit();
}

Now, suppose you have to go from FragmentA to FragmentB. 现在,假设您必须从FragmentA转到FragmentB。 Write the below code in FragmentA: 在FragmentA中编写以下代码:

((YourActivity) getActivity()).navigateTo(new FragmentB(),true);//if you do not want to add to back stack then make the 2nd argument as false.

Hope the above description helps. 希望以上描述对您有所帮助。 Thanks. 谢谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM