我正在使用底部导航栏开发一个应用程序。 该应用程序具有三个标签。主页(片段1),我的页面(片段2),搜索(片段3)。它们都是碎片。在“我的页面”选项卡中,它具有添加项目的按钮。在单击按钮上,我制作了另一个片段供用户将信息放入项目中并添加(片段4)。问题是当我按“我的页面”中的“添加”按钮,然后单击底部的导航栏时,屏幕不会更改为“主页”,“我的页面”或“搜索页面”。它只显示“片段4”页面,当我按“后退”按钮时,它关闭了“片段4”。
我想进行更改,以便在任何情况下都可以按底部导航栏,屏幕将更改为我单击的页面。
这是我的MainActivity代码
public class MainActivity extends AppCompatActivity {
BottomNavigationView bottomNavigationView;
final Fragment homefragment = new HomeFragment();
final Fragment mypagefragment = new MyPageFragment();
final Fragment searchfragment = new SearchFragment();
final Fragment mypageaddfragment = new MyPageAddFragment();
final FragmentManager fm = getSupportFragmentManager();
Fragment active = homefragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fm.beginTransaction().add(R.id.fragment_container,mypageaddfragment,"4").hide(mypageaddfragment).commit();
fm.beginTransaction().add(R.id.fragment_container,searchfragment,"3").hide(searchfragment).commit();
fm.beginTransaction().add(R.id.fragment_container,mypagefragment,"2").hide(mypagefragment).commit();
fm.beginTransaction().add(R.id.fragment_container,homefragment,"1").commit();
bottomNavigationView = findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(navListener);
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.home:
fm.beginTransaction().hide(active).show(homefragment).commit();
active = homefragment;
break;
case R.id.mypage:
fm.beginTransaction().hide(active).show(mypagefragment).commit();
active = mypagefragment;
break;
case R.id.search:
fm.beginTransaction().hide(active).show(searchfragment).commit();
active = searchfragment;
break;
}
return true;
}
};
}
这是我的“我的页面”代码。
public class MyPageFragment extends Fragment {
private static final int REQUEST_CODE_FOR_MYPAGE = 9000;
private static final String TAG = "MypageFragment";
final int REGISTER_CODE = 3000;
ImageButton addButton;
ListView petList;
MyPageAdapter myPageAdapter;
public View onCreateView(LayoutInflater layoutInflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){
View view = layoutInflater.inflate(R.layout.fragment_mypage,container,false);
addButton = view.findViewById(R.id.addButton);
petList = view.findViewById(R.id.petList);
myPageAdapter = new MyPageAdapter();
petList.setAdapter(myPageAdapter);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
swapFragment();
}
});
return view;
}
private void swapFragment(){
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
MyPageAddFragment myPageAddFragment = new MyPageAddFragment();
myPageAddFragment.setTargetFragment(MyPageFragment.this, REGISTER_CODE);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.add(R.id.fragment_container,myPageAddFragment);
fragmentTransaction.commit();
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode==REGISTER_CODE){
PetInfoItem item = (PetInfoItem) data.getSerializableExtra("PetInfo");
myPageAdapter.addItem(item);
myPageAdapter.notifyDataSetChanged();
Log.d(TAG, item.getPetName());
}
}
}
}