首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >片段addToBackStack关闭应用程序

片段addToBackStack关闭应用程序
EN

Stack Overflow用户
提问于 2013-09-23 16:04:53
回答 4查看 4K关注 0票数 1

我没有找到任何解决我的问题的办法。

我得到了几个片段(动态创建的),但是我的Back Button根本不工作,按它会关闭应用程序,不管哪个片段是“活动的”。

代码语言:javascript
运行
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {

case R.id.itemAdd:
FragmentTransaction tx = getFragmentManager().beginTransaction();
    Fragment fragment = new NeuesProduktFrag();

    tx.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right,
             R.anim.slide_in_left, R.anim.slide_out_right);
     tx.replace(R.id.main, fragment);
     tx.addToBackStack(null);
     tx.commit();
    return true;

一切正常,但在输入"NeuesProduktFrag“片段并按回按钮之后,我的应用程序就关闭了。尝试在不同的按钮等。重写onBackPressed是不需要的,对吗?addToBackStack应该做这件事吗?

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-07 14:19:51

在我挣扎了很长一段时间之后,这是我最后的准则:

代码语言:javascript
运行
复制
@Override
public void onBackPressed() {

// initialize variables
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();

// check to see if stack is empty
if (fm.getBackStackEntryCount() > 0) {          
    fm.popBackStack();
    ft.commit();    
}
else {
    if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
Toast.makeText(this, "Nochmal drücken zum Beenden!", 4000).show();
this.lastBackPressTime = System.currentTimeMillis();
} else{
        super.onBackPressed();
    }        
}
}

我在我的FragmentActivity中使用了它,最后添加了一个双重选项卡来关闭应用程序。

票数 6
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18963874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档