在android片段活动中实现后退按钮

时间:2014-08-06 06:13:32

标签: android android-fragments android-actionbar back-button

我正在使用本教程来实现facebook登录等。

Facebook Login

我在此添加了新片段以显示朋友列表。现在,当我按下我新添加的片段上的后退按钮时,它会将我带到SPLASH片段,我想在操作栏上的后退按钮上执行相同的操作。意味着当我在我的新片段上时,它会在操作栏上显示一个后退按钮。然后按下后退按钮将我带回SPLASH屏幕。

enter image description here

private void showFragment(int fragmentIndex, boolean addToBackStack) {
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction transaction = fm.beginTransaction();
    for (int i = 0; i < fragments.length; i++) {
        if (i == fragmentIndex) {
            transaction.show(fragments[i]);
        } else {
            transaction.hide(fragments[i]);
        }
    }
    if (addToBackStack) {
        transaction.addToBackStack(null);
    }
    transaction.commit();
}

2 个答案:

答案 0 :(得分:4)

您可以通过两种方式实现这一目标:

<强> 1 即可。你的片段里面

    @Override
    public void onDetach()
    {
    super.onDetach();
    PUT YOUR CODE HERE    
    }

这将在片段完成时调用。

<强> 2 即可。只需在您的片段之间转换时添加addToBackStack,如下所示:

    fragmentManager.beginTransaction().replace(R.id.content_frame,fragment).addToBackStack("tag").commit();

如果你编写addToBackStack(null),它会自己处理它,但如果你给一个标记,你应该手动处理它。

<强>编辑:

进行交易

FragmentTransaction fragmentTransaction =  getActivity().getSupportFragmentManager().beginTransaction();         
Fragment scheduleFragment = new ScheduleFragment();     
fragmentTransaction.replace(R.id.content_container, scheduleFragment, "scheduleFragment");
fragmentTransaction.addToBackStack("scheduleFragment");
fragmentTransaction.commit();

@Yawar actionbar仅用于活动,当你按动作栏主页按钮 - &gt;

时,这将添加到活动中,它将被称为evertime。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
        // app icon in action bar clicked; goto parent activity.
        this.finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
}
}

答案 1 :(得分:-1)

我在搜索后在stackoverflow上得到了这个代码,希望这可以帮到你

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);// in on Create()

搜索代码onOptionsItemSelected(MenuItem item) 并以这种方式编辑

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
        // change your behaviour here
        Intent intent = new Intent(this, yourclass.class);// i started new activity here
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;
  }
    return super.onOptionsItemSelected(item);
}