【问题标题】:Implementing back button in android fragment activity在android片段活动中实现后退按钮
【发布时间】:2014-08-06 06:13:31
【问题描述】:

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

Facebook Login

我在其中添加了新片段以显示朋友列表。现在,当我在新添加的片段上按下后退按钮时,它会将我带到 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();
}

【问题讨论】:

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


【解决方案1】:

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

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 操作栏仅在活动中,这将添加到活动中,当您按下操作栏主页按钮时,它将被调用-->

@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);
}
}

【讨论】:

  • 我以前是用第二种方法的:)
  • 先生,我已经用函数代码 sn-p 编辑了我的问题,我用它来非常有效地从一个片段转移到另一个片段。我想要的是在我的片段 4 顶部添加一个后退按钮,这会将我带回到片段 3。
  • 我的应用程序已经在操作栏上没有返回按钮。意味着当在片段 4 上按下 android 设备的后退按钮时,它会将我带到片段 3。我希望片段 4 顶部的按钮也可以为我做同样的事情。
  • 然后在按钮点击时进行交易
  • 我不知道如何在操作栏上添加返回按钮。
【解决方案2】:

经过努力搜索后,我在 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);
}

【讨论】:

  • 不,你错了,我想在按下操作栏上的后退按钮时获得相同的行为。我正在按下 android 上的后退按钮。
  • 这是我想要的片段的活动。
  • 我也添加了一张图片。在我的问题中
  • 对不起,我看不到图片,它们被我们电脑中的管理员屏蔽了
  • 我发现这个例子对你的情况很有用stackoverflow.com/questions/13086840/…
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 2013-09-21
  • 2014-03-05
  • 2016-10-14
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2012-06-06
相关资源
最近更新 更多