使用选项卡活动和片段时如何处理后按

Posted

技术标签:

【中文标题】使用选项卡活动和片段时如何处理后按【英文标题】:How to handle the backpressed while using tabactivity and fragment 【发布时间】:2018-05-14 01:27:03 【问题描述】:

我正在使用activtity,它由fragment A 放置。 fragment A 包含 3 个选项卡 tab Atab Btab C 在应用程序启动时显示 tab B。这 3 个选项卡有一个列表,当单击任何列表时,fragment A 将替换为 fragment B,当从 fragment B 回压时,它应该显示单击它的选项卡。

【问题讨论】:

欢迎来到 Stack Overflow!请花点时间阅读How do I ask a good question? 和How to create a Minimal, Complete, and Verifiable example。 你能发布你到目前为止所尝试的吗? 【参考方案1】:

按照这个。使用Abstract ClassBackable FragmentFragment 上实现onBackPressed() 功能的绝佳示例。

1) 创建一个抽象类 -

import android.app.Fragment;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;

public abstract class BackableFragment extends Fragment implements View.OnKeyListener 

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) 
        super.onViewCreated(view, savedInstanceState);
        view.setFocusableInTouchMode(true);
        view.requestFocus();
        view.setOnKeyListener(this);
    

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) 
        if (event.getAction() == KeyEvent.ACTION_UP) 
            if (keyCode == KeyEvent.KEYCODE_BACK) 
                onBackButtonPressed();
                return true;
            
        

        return false;
    

    public abstract void onBackButtonPressed();

2) 将Abstract Class 实现到您的Fragment -

public class FragmentChannels extends BackableFragment 

    ...

    @Override
    public void onBackButtonPressed() 
        if (doTheThingRequiringBackButtonOverride) 
            // do the thing
         else 
            //go to your preferable fragment or activity when you press back on any fragment  
        
    

    ...

就是这样。 Reference

【讨论】:

【参考方案2】:
Try this in on click 

view = getActivity().findViewById(R.id.activity_page1);
                ViewPager viewPager= (ViewPager)view.findViewById(R.id.viewpager);
                int tab = viewPager.getCurrentItem();
                tab--;
                viewPager.setCurrentItem(tab);

【讨论】:

以上是关于使用选项卡活动和片段时如何处理后按的主要内容,如果未能解决你的问题,请参考以下文章

将 Google API 客户端对象从活动传递到滑动选项卡片段

在选项卡式应用程序中的何处放置位置代码?

以编程方式使用选项卡更改片段的选项卡索引

使用片段在选项卡中启动活动

片段和活动之间没有传递值

如何在片段选项卡中添加另一个活动(例如视频活动)?