我想通过单击活动中的按钮转到主屏幕。问题是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 ...
答案 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(....){ ... }