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