2015-08-17 51 views
1

我有FragOne调用FragTest和FragTest调用FragBook的顺序调用的框架。当我按下后退按钮时,当前的片段是FragBook,FragTest仅显示为分秒,然后我的应用程序被发送到应用程序托盘。片段onKeyDown()不按预期工作

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    FragmentManager fragManager = getSupportFragmentManager(); 
    Fragment frag = fragManager.findFragmentByTag("Frag_Book"); 

    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     if (frag.isVisible()) { 
      fragManager.beginTransaction() 
        .replace(R.id.container, Fragment.instantiate(MainActivity.this, fragments[1]),"Frag_Test") 
        .commit(); 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

我在哪里弄错了方法?谢谢...

+3

也许你应该在分段事务后返回true? – Karakuri

+0

你在片段中调用onKeyDown? – Rich

+0

不,我把它叫做所有碎片的基本活动......我都很困惑......所以发生这种事是因为返回语句...... – Jerry

回答

0
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     FragmentManager fragManager = getSupportFragmentManager(); 
     Fragment frag = fragManager.findFragmentByTag("Frag_Book"); 

     if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
      if (frag.isVisible()) { 
       fragManager.beginTransaction() 
         .replace(R.id.container, Fragment.instantiate(MainActivity.this, fragments[1]),"Frag_Test") 
         .commit(); 
      return true; //"------------- should be add" 
      } 
     } 
     return super.onKeyDown(keyCode, event); 
    }