Как перейти к фрагменту из активности в моем случае - PullRequest
0 голосов
/ 12 июня 2019

Я хочу перейти на домашний экран, нажав кнопку в упражнении.Проблема в том, что HomeActivity имеет BottomNavigation и делит его на 4 фрагмента. Я не хочу показывать первый «HomeFragment». То, что я хочу показать, Fragment - это 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;
            }
        };

Я хочу перейти от действия, чтобы показать ProfileFragment Как я могу это сделать?в том случае, когда я нажимаю кнопку перейти к HomeFragment ...

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Передайте флаг намерению и войдите в деятельность

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

Надеюсь, это поможет вам!

0 голосов
/ 12 июня 2019

Вы можете установить идентификатор выбранного элемента по умолчанию в вашем BottomNavigationView.

Вы можете сделать это следующим образом:

bottomNavigationView.setSelectedItemId(R.id.idOfItemYouWantSelected);

Итак, вам нужно изменить свой код на это:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    bottomNavigationView = findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(navigationItemSelectedListener);
    bottomNavigationView.setSelectedItemId(R.id.nav_bottomBar_profile);
}

С помощью этого кода фрагмент вашего профиля будет автоматически выбираться при каждом открытии действия.

Кроме того, вы можете использовать тот же метод для выбора любого фрагмента, который вы пожелаете.

Вы можете передать любое уникальное имя для фрагмента через Intent из вашего Activity, затем в вашем onCreate() вы можете проверить, какой Fragment вы хотите выбрать, например,

if(getIntent().getStringExtra("which_fragment_to_select").equals("profile")){
    navigationView.setSelectedItemId(R.id.idOfItemYouWantSelected);
}else if(....){ ... }
...