2016-11-16 122 views
0

我有一個查詢,需要幫助重新調整它。從片段返回按

我在我的應用程序中有兩個片段,比如片段A和片段B,當我的應用程序打開時片段A將首先出現(並且它包含一個按鈕,同時按下按鈕它調用片段B)。現在片段B包含一個Button (讓我們說按鈕C),同時按下按鈕C popwindow會出現。

問題我面臨的,當我從片段B中,popwindow解聘返回按,那工作不錯,但它裝載片段A.

我不希望加載片段A上返回按。在背面按下,如果彈出窗口顯示,則應該關閉並保留在片段B中,如果popwindow沒有顯示,則應該退出應用程序。

我試過了:我創建了片段B中的接口,並在Activity中獲取popwindow的實例。

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 

     if(popupWindow!=null && popupWindow.isShowing()){ 
      popupWindow.dismiss(); 
      backpopwindow.dismiss(); 
     } 
    } 

    @Override 
    public void onHandleRequest(PopupWindow popupWindow, PopupWindow backpopwindow, String fragmentName) { 
     if (fragmentName != null) { 
      this.fragmentName = fragmentName; 
      if (popupWindow != null) { 
       this.popupWindow = popupWindow; 
       this.backpopwindow = backpopwindow; 

      } 
     } 
    } 
+1

hide super.onBackPressed();並運行。 –

+0

其他條件調用getActivity()。finish();它應該工作。 –

回答

2
@Override 
public void onBackPressed() { 

    if(popupWindow!=null && popupWindow.isShowing()){ 
    popupWindow.dismiss(); 
    backpopwindow.dismiss(); 
    } else { 
    finish(); 
    } 
} 

這將關閉popupWindow如果是可見的,否則完成活動

1

你可以試試這個,它會與片段B並彈出窗口也回棧工作。

@Override 
public void onBackPressed() { 
    //super.onBackPressed(); 

    if(popupWindow!=null && popupWindow.isShowing()){ 
     popupWindow.dismiss(); 
     //backpopwindow.dismiss(); 
     return; 
    } 

    if (getSupportFragmentManager().getBackStackEntryCount() > 0) 
    { 
     getSupportFragmentManager().popBackStack(); 

    } 
    else 
    { 
     finish(); 
    } 
}