2017-02-20 67 views
0

我有一個包含幾個視圖的片段。我想捕捉它上面的後退按鈕,所以如果選擇了它的特定視圖,只需省略按鈕按鈕,並且如果沒有選擇該特定視圖,就像任何後退按鈕按下它的工作。我用下面的代碼來捕捉後退按鈕:有條件地捕獲返回按鈕片段

View v = inflater.inflate(R.layout.home_page, paramViewGroup, false); 
v.setFocusableInTouchMode(true); 
    v.requestFocus(); 
    v.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
       if (fab.isSelected()) { 
        hideMenu(); 
        fab.setSelected(!fab.isSelected()); 
       } 
       // else 
       //  How back button do its habitual job? 
       // 
       return true; 
      } else { 
       return false; 
      } 
     } 
    }); 

如何更改後退按鈕執行其慣常工作的代碼?

使用當前代碼,後退按鈕不會終止主頁中的應用程序。

+1

嘗試'getActivity()。onBackPressed;' – Belzebub

+1

一個簡單的答案就是調用'onBackPressed();' –

回答

0

您應該覆蓋活動範圍中的onBackPressed()方法,並從onOptionsItemSelected方法中調用該方法。

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    // Do your things. 
} 

public void method() 
{ 
    onBackPressed(); 
} 

如果你想添加一些複雜的邏輯在onBackPressed方法,只是創建另一個參數。

public void myOnBackPressed(int param1, String param2) 
{ 
    // Do your complex logic. 
    onBackPressed(); 
} 

public void method() 
{ 
    myOnBackPressed(myInt, myString); 
} 
0

在您的代碼中,您設置了return true。這意味着你處理返回按鈕,你不想要發送後退按鈕。 您可以撥打onBackPressed()onKey()方法在外面發射回按鈕。或者您可以在onBackPressed()的片段中處理返回按鈕。