2016-12-05 76 views
0

你好,我有一個片段的活動。我可以打開一個片段,當我點擊圖標或類似的東西 但我想用OnBackPressed方法關閉片段(或隱藏)。如何關閉一個片段isVisible

我創建這個:

private void onBackPressedInFragments(){ 
    if(backgroundSelectFragment != null && backgroundSelectFragment.isVisible()) 
    backgroundSelectFragment.getActivity().onBackPressed(); 
} 

但是當我打開一個片段,並在電話單擊後退按鈕,我只是關閉應用程序。我的應用程序有一個活動和2個片段:

在這裏,我創建和顯示片段:

​​3210

任何想法的傢伙?

回答

1

覆蓋您的活動中的onBackPressed。如果在backstack中有任何碎片比popBackStack()要簡單finish()您的活動。

private boolean allowedToExit = false; // class level 

@Override 
public void onBackPressed() { 
    int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount(); 
    // this is the last item 
    if (backStackEntryCount == 1) { 
     if (allowedToExit) 
      finish(); 
     else { 
      allowedToExit = true; 
      Toast.makeText(this, "Press again to exit", Toast.LENGTH_SHORT).show(); 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        allowedToExit = false; 
       } 
      }, 1000); 
      return; 
     } 
    } 
    // we have more than 1 fragments in back stack 
    if (backStackEntryCount > 1) { 
     getSupportFragmentManager().popBackStackImmediate(); 
     // getSupportFragmentManager().beginTransaction().commit(); 
    } else 
     super.onBackPressed(); 
}