android点击跳出一个碎片框,android – 内部碎片的Backtrace

可能是问题标题很常见,但问题不是.我正在使用一个Activity,其中框架布局我用FragmentTransaction和FragmentManager替换片段.这是成功完成我得到了新的片段让我说片段A.现在在片段A我有viewpager有三个标签,每个标签有片段所以在片段A我有片段B,片段C和片段D.

Whole scenario Activity-> replacing framelayout -> Fragment A-> three

tabs (three fragments Fragment B,Fragment C and Fragment D)

现在问题:

如果我在第二个标签中,如果我回来按,那么我直接转到活动.如果在第二个或第三个选项卡中然后移动到先前的选项卡,如果在第一个选项卡中,则转到活动页面.

可能在片段中回溯是自动维护但如果在Activity中使用则只有.现在我正在使用片段来保持标签.

我尝试了什么:

我创建了监听器:

PageChangeListener:

public interface PageChangeListener {

public void onNextRequest();

public void onPrivousRequest();

}

在片段A中实现了这个:

@Override

public void onNextRequest() {

if(mViewPagerPage + 1 < mPageCount)

{

viewPager.setCurrentItem(++mViewPagerPage,true);

}

}

@Override

public void onPrivousRequest() {

if(mViewPagerPage -1 >= 0)

{

viewPager.setCurrentItem(--mViewPagerPage,true);

}

}

但是在这个问题中是:在哪里使用onPrivousRequest()方法,因为片段没有onBackPressed方法.

任何帮助将不胜感激.

解决方法:

where to use onPrivousRequest() method as fragments don’t have onBackPressed Method.

有办法这样做:

第1步:创建和界面

public interface OnFragmentBackPressed {

boolean onBackPressed();

}

第2步:在Fragment中实现它

public class TabFragment extends Fragment implements OnFragmentBackPressed {

@Override

public boolean onBackPressed() {

if (Condition: Check if you have to move on other tabs) {

return true;

} else {

return false;

}

}

}

第3步:在你的Activity覆盖onBackPressed()

public class FragmentContainerActivity extends AppCompatActivity {

@Override

public void onBackPressed() {

Fragment mF = getSupportFragmentManager().findFragmentById(R.id.main_container);

if (!(mF instanceof OnFragmentBackPressed) || !((OnFragmentBackPressed) mF).onBackPressed()) {

super.onBackPressed(); // This won't get called unless you return false in Fragment's onBackPressed();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值