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