概述
可能是问题标题很常见,但问题不是.我正在使用一个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();
}
}
}
最后
以上就是风中手机为你收集整理的android点击跳出一个碎片框,android – 内部碎片的Backtrace的全部内容,希望文章能够帮你解决android点击跳出一个碎片框,android – 内部碎片的Backtrace所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复