我正在使用ActionBarSherlock库来获取预蜂窝版本的操作栏。我有一个活动,其操作栏菜单从 xml 下方膨胀
菜单.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_bar_search"
android:icon="@drawable/ic_search"
android:showAsAction="always|collapseActionView" android:title="Search"
android:actionLayout="@layout/layout_search">
</item>
</menu>
下面是actionLayout
> 布局搜索.xml
<?xml version="1.0" encoding="utf-8"?>
<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/autoCompText_action_bar_search"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cursorVisible="true"
android:imeOptions="flagNoExtractUi"
android:inputType="text"
android:textColor="@color/color_action_bar_text"
android:textCursorDrawable="@android:color/black"
android:background="@drawable/textfield_bg_activated_holo_dark"
/>
我还实现了 OnActionExpandListener 来监听菜单项的展开和折叠事件。下面是我对 OnActionExpandListener 的实现
private OnActionExpandListener searchActionExpandListener = new OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
/* This is done so that requestFocus() can popup the softkeyboard.
* Else, no softkeyboard is popped up
*/
edtTextSearch.post(new Runnable() {
@Override
public void run() {
edtTextSearch.requestFocus();
mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.showSoftInput(edtTextSearch, InputMethodManager.SHOW_IMPLICIT);
}
});
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
mImm.hideSoftInputFromWindow(edtTextSearch.getWindowToken(), 0);
return true;
}
};
所以现在,在按下操作栏上的搜索按钮时,会显示 actionLayout,并且会弹出软键盘并关注它。到目前为止一切正常。但是当我按下返回键(手机上的硬键)时,动作视图就会崩溃。我要做的就是在按下后退键时隐藏软键盘(如果它正在显示)而不折叠动作视图。谁能帮帮我?