如何检测虚拟后退按钮的使用?

时间:2013-03-08 07:28:54

标签: android

我使用片段,我希望检测后退按钮停止退出应用程序并执行其他操作。 但是......我尝试的所有代码都不起作用: 我已经在调试模式下测试了断点进入函数,但是当我按下后退按钮并且应用程序退出时,它们似乎都没有被调用。

       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;   
    }
    }

我不知道为什么没有任何工作,任何想法?

2 个答案:

答案 0 :(得分:0)

此方法将为您提供Activity

的解决方案
@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
}

答案 1 :(得分:0)

当你在Fragments之间转换时,调用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;
    }
} );