0
我实现了我的片段是这样的:上回用户点击按钮时,它都会进入这个函数:的EditText焦点不会允许我这样做onKeyBack
public void onResume()
{
super.onResume();
if(getView() == null)
{
return;
}
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK)
{
Fragment fragment = new FlightPerformanceFragment();
manager.beginTransaction().replace(R.id.content_main,fragment).commit();
Log.e("resume","resume FlightPerformance");
return true;
}
return false;
}
});
}
只要有这工作好不是editText的重点。 我已经搜查了很多,我尝试以这种方式来解决这个问题,使用OnKeyListener
:
View.OnKeyListener onKeyListener = new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
//check if the right key was pressed
if (keyCode == KeyEvent.KEYCODE_BACK)
{
if(v == tasET)
tasET.clearFocus();
else if(v == rhoET)
rhoET.clearFocus();
return true;
}
}
return false;
}
};
tasET = (EditText) rootView.findViewById(R.id.paisaET);
tasET.setOnKeyListener(onKeyListener);
的问题是,有时方法clearFocus()重新开启以前EDITTEXT并没有明确的焦点在每一个editText。
所以,如果这种方法似乎有点复杂做简单的后台操作(我不能使用onBackPressed(),因为我需要替换其他片段),是否还有一个最简单的方法来做到这一点?
谢谢你的帮助。
http://stackoverflow.com/questions/3940127/intercept-back-button-from-soft-keyboard/5811630#5811630 – peter
软键盘上进行后面的点击动作@peter我刚刚尝试过但未解决问题 – ste9206
您的活动是否在'Manifest.xml'文件中定义了windowSoftInputMode属性? – blueware