首页 > 解决方案 > 在我的情况下如何从活动转移到片段

问题描述

我想通过单击活动中的按钮进入主屏幕。问题是 HomeActivity 有 BottomNavigation 并将其分为 4 个片段我不想显示第一个“HomeFragment”我想显示的片段是 ProfileFragment 如何让 ProfileFragment 屏幕出现?

我已经搜索过,但在我的情况下有点不同

这是我的A活动

backTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Intent intent  = new Intent(PetHotelActivity.this, HomeActivity.class);
           startActivity(intent);

        }
    });

这是我的家庭活动

public class HomeActivity extends AppCompatActivity {
BottomNavigationView bottomNavigationView;
Fragment seletedFragment = null;



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




    bottomNavigationView = findViewById(R.id.bottom_navigation);

    bottomNavigationView.setOnNavigationItemSelectedListener(navigationItemSelectedListener);

    Bundle intent = getIntent().getExtras();
    if (intent != null){
        String publisher = intent.getString("publisherid");

        SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
        editor.putString("profileid", publisher);
        editor.apply();

        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, new ProfileFragment()).commit();

    } else{

        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, new HomeFragment()).commit();

    }

}

private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener =
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

                switch (menuItem.getItemId()){
                    case R.id.nav_bottomBar_home:
                        seletedFragment = new HomeFragment();
                        break;

                    case R.id.nav_bottomBar_search:
                        seletedFragment = new SearchFragment();
                        break;

                    case R.id.nav_bottomBar_notification:
                        seletedFragment = new NotificationFragment();
                        break;


                    case R.id.nav_bottomBar_profile:
                        SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
                        editor.putString("profileid", FirebaseAuth.getInstance().getCurrentUser().getUid());
                        editor.apply();
                        seletedFragment = new ProfileFragment();
                        break;



                }

                if (seletedFragment != null){
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, seletedFragment).commit();
                }

                return true;
            }
        };

我想从 A 活动转到显示 ProfileFragment 我该怎么做?在那种情况下,当我单击按钮移动到 HomeFragment ...

标签: androidlayoutfragment

解决方案


将标志传递给意图并参与活动

backTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Intent intent  = new Intent(PetHotelActivity.this, HomeActivity.class);
           intent.putextra("flag","flag");
           startActivity(intent);

        }
    });

现在在oncreate()

if (intent != null){
        String flag= intent.getString("flag");
        if(flag.equalsIgnorecase("flag")){
 getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, new ProfileFragment ()).commit();
}
}

希望对您有所帮助!


推荐阅读