在我的情况下,如何从活动中分散出来

时间:2019-06-12 12:59:58

标签: android layout fragment

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

我已经搜索过,但与我的情况有所不同

这是我的一项活动

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 ...

2 个答案:

答案 0 :(得分:1)

将标志传递给意图并开始活动

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

希望它将对您有帮助!

答案 1 :(得分:0)

您可以在BottomNavigationView中设置默认的选定项目ID。

您可以执行以下操作:

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(....){ ... }