如何在片段android中添加后退按钮

时间:2015-04-08 18:34:16

标签: android android-actionbar fragment

我正在制作一个聊天应用程序我有这么多片段,但我只使用一个活动。在我的应用程序导航抽屉也在那里,所以我的问题是我从第一个片段到第二个片段,在第二个片段我正在使用动作栏homeupenabled显示后退按钮,但是当我按下那个按钮时我没有从onoptionsmenuselected.I正在删除抽屉切换当我通过drawerindicator false输入第二个片段。我试过各方面,请帮帮我

代码:

public class SecondFragment extends Fragment
    {

        private BaseActivity _activity;


        @Override
        public void onAttach(Activity activity)
        {
            super.onAttach(activity);
            _activity= (BaseActivity) activity;

        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);
        }

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
        {
            View view = inflater.inflate(R.layout.base, null);
                           _activity._mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
            _activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            return view;
        }

        @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            super.onCreateOptionsMenu(menu, inflater);
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case android.R.id.home:
                    // app icon in action bar clicked; goto parent activity.
                    getActivity().getSupportFragmentManager().popBackStack();
                    Toast.makeText(getActivity(),"working",Toast.LENGTH_SHORT).show();
                    return true;
                default:
                    return super.onOptionsItemSelected(item);
            }
        }

3 个答案:

答案 0 :(得分:0)

您可以使用

getActivity().onBackPressed()

答案 1 :(得分:0)

你只能在同一活动的时候做事

1)Open drawer event or
2)Back Button

因为其他是片段

如果你想在背压事件上做一些事情,那么你可以使用重写方法

public void onBackPressed()

您的活动

答案 2 :(得分:0)

在创建第一个片段时,是否已将第二个片段放在第一个片段中的背板上?我遇到了你所描述的确切问题。阅读你的代码我意识到我在第二个片段中没有覆盖onOptionsItemSelected,但已在第二个片段中调用了setHasOptionsMenu(true)setDisplayHomeAsUpEnabled(true)。所以,一旦我加入onOptionsItemSelected。我能够回到第一个片段。我甚至只是将你的家庭案例代码粘贴到我的第二个片段中,并得到了"工作"第一次吐司。

我唯一的另一个区别是我没有@Override public View onCreateView。但这是出于不同的原因。所以我的setHasOptionsMenu(true)setDisplayHomeAsUpEnabled(true)onActivityCreated中被调用,我的第一个片段是活动在创建时在其容器中膨胀的主要片段。

首先调用第二个片段就像在onlistItemClick

中一样
Bundle args = new Bundle();
        args.putSerializable("SELECTED_TAG", dataList);

        SecondFragment toFragment = new SecondFragment();
        toFragment.setArguments(args);
        //show more about the exercise
        //TODO:start an indent to launch new activity
        FragmentManager fm = getFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();
        transaction.setCustomAnimations(R.anim.slidein, R.anim.slideout);
        transaction.addToBackStack(null).replace(R.id.container, toFragment, SECOND_FRAGMENT_TAG)
                .commit();

然后第二个片段返回'在onOptionItemSelected中与你的完全一样