Нижняя панель навигации с использованием фрагмента вопроса - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над приложением, используя нижнюю панель навигации. В приложении есть три вкладки. Главная (Фрагмент 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());
            }
        }
    }

}
...