【问题标题】:3 tabs with each one carry 1 fragment and when press back go to previous tab3 个选项卡,每个选项卡带有 1 个片段,当按返回时转到上一个选项卡
【发布时间】:2016-06-17 12:54:14
【问题描述】:

我想创建 3 个选项卡,每个选项卡都有一个片段,当我按下设备中的后退按钮而不是关闭应用程序时,我需要转到上一个选项卡。我尝试了很多但没有找到适合我的正确答案app.我是开发新手。

我的项目中有 3 个选项卡,当我处于选项卡 3 时,如果我按下它需要转到选项卡 2 而不是关闭应用程序。

我得到的任何建议都只能回到以前的片段。 但是当我们在 android 设备中按下返回按钮时,我想转到上一个标签。

【问题讨论】:

  • 这里的代码你试过什么??
  • 以下是我在我的应用程序中使用的代码。
  • 我会试试这个,我会发布我的代码,你可以了解它。

标签: android tabs


【解决方案1】:

这可以通过覆盖onBackPressed() 轻松实现。 这里的关键是根据该信息跟踪您当前的片段和样本选项卡。

@Override
public void onBackPressed() {
    switch(activeFragment){
        case 3: triggerTab2();
            break;
        case 2: triggerTab1();
           break;
        case 1: super.onBackPressed();
            break;
    }
}

【讨论】:

  • 我用我的代码尝试过这个,但它也不起作用
【解决方案2】:

如果您使用OnBackPressed()按下后退按钮在一个标签中有不同的片段,我们可以转到上一个片段。对于这种情况,以下代码将为您提供帮助。

    @Override 
public void On BackPressed(){
//You can check by write toast if it working are not.
FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() > 0) {
    // If there are back-stack entries, leave the FragmentActivity
    // implementation take care of them.
    //implement your code here.

    super.onBackPressed();
 }
}

它将帮助您返回以前的片段而不是以前的选项卡。

这将帮助您理解。 Separate Back Stack for each tab in Android using Fragments

【讨论】:

【解决方案3】:

使用片段创建选项卡检查此链接 - http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/

对于按下后退按钮,您需要在活动中覆盖onBackPressed(),而不是在片段中。您需要处理后按并提供相应选项卡的索引。

希望对你有帮助

【讨论】:

  • 我曾尝试过,但该代码中没有返回堆栈。当我尝试添加时它不起作用。
【解决方案4】:

使用这个

  @Override
public void onBackPressed() {
    // put switch or if which decide which fragment 
    Class fragmentClass = Fragment.class;
            Fragment fragment = null;
            try {
                fragment = (Fragment) fragmentClass.newInstance();
            } catch (java.lang.InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

            ((Activity) getContext()).getSupportFragmentManager().beginTransaction()
                    .replace(R.id.content_fragment, fragment).commit();

            // R.id.content_fragment => id of viewPager
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多