2013-03-08 32 views
1

我使用片段,並且我想檢測後退以停止退出應用程序並執行其他操作。 但是....我試過的所有代碼都不起作用: 我在調試模式下測試了斷點進入函數,但是當我按下後退按鈕時,它們似乎沒有被調用,並且應用程序退出。如何檢測虛擬後退按鈕的使用情況?

 public class MyListFragment extends Fragment implements OnTouchListener, OnFocusChangeListener, OnClickListener, OnKeyListener{ 

// Test 1 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
        String a=null; 
        switch(keyCode) 
        { 
        case KeyEvent.KEYCODE_CAMERA: 
        Toast.makeText(getActivity(),"Pressed Camera Button",        Toast.LENGTH_SHORT).show(); 
         return true; 
        case KeyEvent.KEYCODE_1: 
        Toast.makeText(getActivity(), "Pressed 1", Toast.LENGTH_SHORT).show(); 
         return true; 
        case KeyEvent.KEYCODE_HOME: 
        Toast.makeText(getActivity(), "Pressed Home Button", Toast.LENGTH_SHORT).show(); 
         return true; 
        case KeyEvent.KEYCODE_BACK: 
        Toast.makeText(getActivity(), "Pressed Back Button", Toast.LENGTH_SHORT).show(); 
         return true; 
        } 
        if (keyCode == KeyEvent.KEYCODE_BACK) 
        { 
        a=a; 
        } 
        return false; 
       } 
// Test 2 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 
     String b=null; 
     b=b; 

     return false; 
    } 
// Test 3  
    public void onBackPressed() { 
     String b=null; 
     b=b;  
    } 
// Test 4  
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
     String b=null; 
     b=b; 
     return false; 
    } 
    } 

我不知道爲什麼沒有工作,有什麼想法?

+0

添加@覆蓋上)onBackPressed(公共無效{} – DjHacktorReborn 2013-03-08 07:35:07

+0

當我添加@覆蓋蝕說: 「我的ListFragment的te方法onBackPressed()必須覆蓋或實現一個超類型方法..... – morbak 2013-03-08 09:50:40

+0

發佈了一個解決方案嘗試,如果這解決了你的問題 – DjHacktorReborn 2013-03-08 09:54:52

回答

0

這種方法會給你Activity的解決方案。

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
} 
+0

當我添加@覆蓋eclipse說:」我的列表頁面的方法必須覆蓋或者實現一種超類型方法..... – morbak 2013-03-08 09:49:58

+0

哦對不起,你需要把這段代碼放在你的父活動中有'FragmentActivity'。你可以在那裏放置一個'listener'來調用fragment來做某件事。 – 2013-03-08 09:56:30

0

當你片段之間的轉換,調用addToBackStack()作爲FragmentTransaction的一部分:

FragmentTransaction tx = fragmentManager.beginTransation(); 
tx.replace(R.id.fragment, new MyFragment()).addToBackStack("tag").commit(); 

如果您需要更詳細的控制(即當一些片段可見,要抑制返回鍵),您可以在片段的父視圖設置OnKeyListener:

fragment.getView().setOnKeyListener(new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if(keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      return true; 
     } 
     return false; 
    } 
}); 
相關問題