当前位置: 首页 > 知识库问答 >
问题:

在android fragment活动中实现后退按钮

瞿文柏
2023-03-14

我用这个教程来实现facebook登录等。

Facebook登录

我在这里添加了新的片段来显示朋友列表。现在,当我在新添加的片段上按下后退按钮时,它会把我带到SPLASH片段,我想要动作栏上同样的后退按钮行为。这意味着当我在我的新片段上时,它会在动作栏上显示一个后退按钮。按下后退按钮会把我带回SPLASH屏幕。

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个答案

梁昊天
2023-03-14

我在搜索了stackoverflow后得到了这个代码,希望这能帮助你

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

搜索codeonoptions项selected(MenuItem项)并以这种方式编辑它

@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);
}
洪高扬
2023-03-14

你可以通过两种方式做到这一点:

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仅在活动中,它将添加到活动中,每次按actionbar home按钮时都会调用它--

@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);
}
}
 类似资料:
  • 我正在使用android 2.1,希望在Mapsavity上添加一个后退按钮。我在这一页上尝试了什么[在操作栏上显示后退按钮,但应用程序崩溃。我已经按照另一个论坛的建议将extends FragmentActivity替换为AppCompatActivity,但应用程序仍然崩溃。我知道这与操作栏有关,因为如果我删除它,应用程序就会工作。操作栏似乎为空。我被卡住了,已经启动了应用程序数次。下面是错误

  • 我试图用这段代码来显示我的个人档案活动: 当我点击Profile菜单项时,我可以看到我的ProfileActivity,但我的ActionBar上没有任何back按钮来返回我以前的活动。 那么,我如何显示一些后退按钮?我的代码是否正确以显示菜单中的活动?

  • 我有一个玩家活动和浮动玩家(服务),点击后退按钮后,玩家活动关闭,浮动玩家开始行动,当我点击浮动玩家时,我想回到玩家活动,但没有再次运行创建方法。 我在StackOver Flow中读到了很多解决方案,特别是使用FLAG\u ACTIVITY\u CLEAR\u TOP和FLAG\u ACTIVITY\u SINGLE\u TOP标志,或者将android:launchMode=“singleTa

  • 问题内容: 我最近在许多Android应用程序和游戏中都注意到了这种模式:单击“后退”按钮以“退出”该应用程序时,会出现类似“请再次单击BACK退出”的消息。 我想知道,正如我越来越经常看到的那样,这是你可以以某种方式在活动中访问的内置功能吗?我看过许多类的源代码,但似乎找不到任何东西。 当然,我可以考虑几种很容易实现相同功能的方法(最简单的方法可能是在活动中保留一个布尔值,以指示用户是否已经单击

  • 我目前正在处理一个Android项目,当用户在使用对话框主题的活动上按后退按钮时,我遇到了问题。 基本上,我有一个活动,让我们称之为我的活动,第二个活动使用@android: style/Theme.Holo.Dialog称为MyDialog。 当MyDialog活动显示在屏幕上时,活动对话框在对话中按预期启动,但当用户按下返回按钮时,对话框活动按预期关闭,但启动活动即MyActive似乎结束了,

  • 当使用Intent启动一个新活动时,活动顶部的栏是否会自动提供后退按钮?我假设它是这样工作的,但没有看到它。如果它没有自动出现,需要什么来使它出现?