使用选项卡活动和片段时如何处理后按
Posted
技术标签:
【中文标题】使用选项卡活动和片段时如何处理后按【英文标题】:How to handle the backpressed while using tabactivity and fragment 【发布时间】:2018-05-14 01:27:03 【问题描述】:我正在使用activtity
,它由fragment A
放置。 fragment A
包含 3 个选项卡 tab A
、tab B
和 tab 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 Class
和Backable Fragment
在Fragment
上实现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);
【讨论】:
以上是关于使用选项卡活动和片段时如何处理后按的主要内容,如果未能解决你的问题,请参考以下文章