2 つのアクティビティを含むアプリを使用していますが、アクティビティを切り替えると同時に、再開されたばかりのアクティビティのアクションバーで検索入力を開く必要がある場合があります。キーボードを起動できないことを除いて、すべて正常に動作します。true
私のコードの関連ビットは以下のとおりです(注:検索入力が必要な場合、アクティビティの切り替えの結果としてブール値の startsearch が設定されます):
public class MyActivity extends Activity {
private InputMethodManager imm;
public boolean startsearch;
private MenuItem DestinationTxt;
private SearchView mySearchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// various initialisation, and then:
startsearch = false;
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.action_menu, menu);
DestinationTxt = menu.findItem(R.id.actionbar_search);
mySearchView = (SearchView)DestinationTxt.getActionView();
// more menu create stuff appears here
}
@Override
public void onResume() {
super.onResume();
if (startsearch) {
DestinationTxt.expandActionView();
imm.showSoftInput(mySearchView, 0);
}
}
}
action_menu.xml の関連ビットは
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/actionbar_search"
android:orderInCategory="1"
android:showAsAction="always|withText|collapseActionView"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/earth_2508858_search_en"
android:inputType="textPostalAddress"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"></item>
</menu>
前述したように、アクティビティが再開されたときにアクション バーの検索がフォーカスされるため、これはほとんど機能します。しかし、(コードからわかるように) 明示的に要求したにもかかわらず、キーボードは表示されません。誰が私が間違っているのか、キーボードを起動するために何をする必要があるのか教えてもらえますか?