Android 使用片段和活动处理后退按钮?

Android 使用片段和活动处理后退按钮?,android,android-fragments,Android,Android Fragments,我有一个“activity A”,它启动两个片段,home按钮是activity A的一部分,当从createFragment中按下back按钮时,它应该返回到activity A之前的activity,这在finish()方法中很好,但当我有第二个片段时,followersFragment添加到createFragment的顶部并隐藏createFragment(因为我不希望信息在创建过程中丢失),然后我点击后退按钮,它切换回创建片段,但当我点击createFragment的后退按钮时,它不再

我有一个“activity A”,它启动两个片段,home按钮是activity A的一部分,当从createFragment中按下back按钮时,它应该返回到activity A之前的activity,这在finish()方法中很好,但当我有第二个片段时,followersFragment添加到createFragment的顶部并隐藏createFragment(因为我不希望信息在创建过程中丢失),然后我点击后退按钮,它切换回创建片段,但当我点击createFragment的后退按钮时,它不再返回到活动A,并且什么也不做。。。没有错误

这是我在保存片段的活动(不是活动A)上的代码:


我认为您的代码设计使用了太多事务删除/显示和添加/隐藏。以及一些if/else模块的进一步复杂化。我建议简化代码设计。我看到很多帖子都有事务处理,代码无法解决,所以没有人能帮上忙。看在你的份上,这只是我的拙见。查找并替换这个
trans.hide(createPostFragment);trans.add(R.id.frame_容器,片段,null).commit();看看它是否有帮助
Hey Elltz你说的查找和替换是什么意思,切换顺序?而最初的安卓系统,我该如何简化它呢。。。。
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar actions click
        switch (item.getItemId()) {
            // lets user travel back to where they came from
            case android.R.id.home:
                if(displayShown == 1) {

                    displayView(2, 0);
                } else {

                }
                return true;

private void displayView(int i, int position) {

        Log.d(Constants.DEBUG, "display view called " +position);
        boolean createPost = true;
        // update the main content by replacing fragments
        Fragment fragment = null;
        switch (position) {
            case 0:
                //avoid recreating createPostFragment if already created because all data will be erased
                if(createPostFragment == null){
                    createPost = false;
                    Log.d(Constants.DEBUG, "fragment create DOES NOT EXIST ");
                    createPostFragment = new CreatePostFragment();
                }



                fragment = createPostFragment;
                break;
            case 1:
                followerFragment = new FollowerFragment();
                fragment = followerFragment;
                break;
            default:
                break;
        }

        if (fragment != null) {

            FragmentManager fragmentManager = getFragmentManager();
            trans = fragmentManager.beginTransaction();


            //if createpostfrag already created just show
            if (createPost && position == 0) {
                trans.remove(followerFragment);
                trans.show(createPostFragment);
                trans.commit();


                //hide createpostfrag so we can reuse
            } else {
                if(position == 1) {
                    Bundle extraData = new Bundle();
                    extraData.putInt("follow", i);
                    fragment.setArguments(extraData);

                    trans.add(R.id.frame_container, fragment, null).commit();
                    trans.hide(createPostFragment);
                }

                if(position == 0) {

                    trans.add(R.id.frame_container, fragment, "keepAlive").commit();
                }

            }

        } else {
            // error in creating fragment
            Log.d(Constants.DEBUG, "Error in creating fragment or no fragment needed");
        }
    }