如何为Android Fragments(Tabs Activity)实现onBackPressed

Posted

技术标签:

【中文标题】如何为Android Fragments(Tabs Activity)实现onBackPressed【英文标题】:How to Implement onBackPressed for Android Fragments(Tabs Activity) 【发布时间】:2019-02-01 13:58:40 【问题描述】:

我正在开发一个包含 Tabs Activity 的 android 应用程序。我的Tabs 活动包含四个tabs(Fragments--[1][2][3][4])。我想要的是当我按下后退按钮时,它必须重定向到上一个选项卡,而不是第一个选项卡。喜欢

[4] -> [3]
[3] -> [2]
[2] -> [1]
[1] -> Alert to logout from the App

请帮帮我。我必须在TabsActivity 课堂上写什么。

【问题讨论】:

您可以通过 2 种方式进行操作。答案中提到了第一个。第二个是使用instanceof 方法,如下所示 if (mFragment instanceof mFragmentClass) // 执行你的逻辑 【参考方案1】:

假设

你的四个片段被 ViewPager 加热了。

逻辑

您可以将代码写入

 @Override
    void onBackPressed()
    
    if(viewPager.getCurrentItem==3)
    
    viewPager.setCurrentItem(2)
    
    else if

    
   

同样的道理

【讨论】:

【参考方案2】:

使用逻辑而不是硬编码页码。 以下解决方案适用于 Viewpager 中的每个项目数 2,3,... n。

@Override
public void onBackPressed() 
    if (viewPager.getCurrentItem() != 0) 
        viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
     else super.onBackPressed();

如果您使用的是TabHost,那么您可以使用this solution.

【讨论】:

【参考方案3】:

在您附加的活动onBackPressed() 中,您必须执行如下操作,

@Override
void onBackPressed()

   if(viewPager.getCurrentItem==3)
      viewPager.setCurrentItem(2)
   
   else if
     //do your stuff here
    

【讨论】:

以上是关于如何为Android Fragments(Tabs Activity)实现onBackPressed的主要内容,如果未能解决你的问题,请参考以下文章

Android 2.2 + ViewPager和Fragments实现TabHost使用教程

Android FragmentActivity 和 Tabs 的问题

带有 Fragments 和 FragmentActivity 的 TabHost

如何为 React Native 嵌套组件创建 Typescript 定义

android fragment有啥用

从 Host Activity 向 Fragments 发送位置更新