所以我的申请从这里开始: “ https://i.stack.imgur.com/Y4e0d.jpg”
说我想去旅行,单击它,然后得到以下提示: “ https://i.stack.imgur.com/tOWLW.jpg”
然后用户要转到消息: “ https://i.stack.imgur.com/PfY9W.jpg”
然后,如果用户返回我的旅程,但无法正常工作。 “ https://i.stack.imgur.com/SBZhH.jpg”
这是我正在使用的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_trips, container, false);
navigationBar = view.findViewById(R.id.TopMenu);
mainFrameLayout = view.findViewById(R.id.resultFrame);
posts = new Posts();
map = new Maps();
myTrips = new myTrips();
getChildFragmentManager().beginTransaction().replace(R.id.resultFrame, posts).commit();
navigationBar.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId())
{
case R.id.nav_Posts:
getChildFragmentManager().beginTransaction().replace(R.id.resultFrame, posts).commit();
return true;
case R.id.nav_Maps:
getChildFragmentManager().beginTransaction().replace(R.id.resultFrame, map).commit();
return true;
case R.id.nav_myTrips:
getChildFragmentManager().beginTransaction().replace(R.id.resultFrame, myTrips).commit();
return true;
default:
return true;
}
}
});
return view;
此处是底部菜单代码的位置:
private FirebaseUser currentUser;
private BottomNavigationView navigationBar;
private FrameLayout mainFrameLayout;
private tripsFragment tripsFragment;
private messagesFragment messagesFragment;
private notificationFragment notificationFragment;
private profileFragment profileFragment;
private int LastFragment;
@Override
public void onBackPressed() {
if(LastFragment != tripsFragment.getId())
{
getSupportFragmentManager().beginTransaction().replace(LastFragment, tripsFragment).commit();
navigationBar.getMenu().getItem(0).setChecked(true);
}
else{
super.onBackPressed();
finishAffinity();
finish();
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
currentUser = FirebaseAuth.getInstance().getCurrentUser();
if(currentUser != null){
boolean emailVerified = currentUser.isEmailVerified();
if(emailVerified == false){
Toast.makeText(MainScreen.this, "Email is not verified yet.", Toast.LENGTH_LONG).show();
}
}
navigationBar = findViewById(R.id.navigationBar);
mainFrameLayout = findViewById(R.id.mainFrameLayout);
tripsFragment = new tripsFragment();
messagesFragment = new messagesFragment();
notificationFragment = new notificationFragment();
profileFragment = new profileFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.mainFrameLayout, tripsFragment).commit();
LastFragment = tripsFragment.getId();
navigationBar.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId())
{
case R.id.nav_Trips:
getSupportFragmentManager().beginTransaction().replace(R.id.mainFrameLayout, tripsFragment).commit();
LastFragment = tripsFragment.getId();
return true;
case R.id.nav_Notifications:
getSupportFragmentManager().beginTransaction().replace(R.id.mainFrameLayout, notificationFragment).commit();
LastFragment = notificationFragment.getId();
return true;
case R.id.nav_Messages:
getSupportFragmentManager().beginTransaction().replace(R.id.mainFrameLayout, messagesFragment).commit();
LastFragment = messagesFragment.getId();
return true;
case R.id.nav_Profile:
getSupportFragmentManager().beginTransaction().replace(R.id.mainFrameLayout, profileFragment).commit();
LastFragment = profileFragment.getId();
return true;
default:
return false;
}
}
});
}
答案 0 :(得分:0)
每次您从“旅行”到“消息”时,都会创建一个新的片段。但请记住,BottomNavigationView处于活动生命周期中,因此,当您再次从“消息”返回到“行程”时,将重新创建“行程”片段,但没有创建“ BottomNavigation”视图,因此它会记住选中的顶部导航项(本例中为“我的行程”案件)。您可以使用navigationBar.setSelectedItemId(int itemId)将顶部栏中所选项目的更改合并到onClick方法中。
编辑
好的,有了该代码,它应该是:
.cont1
将“ R.id.Posts”更改为帖子按钮的ID