【Android】SearchViewを使う時に気をつけること

MenuのXMLで以下の様にandroid.support.v7.widget.SearchViewを使った場合

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto">
	<item
		android:id="@+id/action_search"
		android:icon="@drawable/ic_search"
		android:title="@string/action_search"
		app:actionViewClass="android.support.v7.widget.SearchView"
		app:showAsAction="ifRoom"/>
</menu>

以下の様にMenuItem#getActionView()でSearchViewを取得できるのですが、リリースビルドするとnullになってしまいました。

menu.findItem(R.id.action_search).actionView

原因はProGuardを使っていることで、ルールを書かないとandroid.support.v7.widget.SearchViewが上手く動かなくなってしまうようです。

proguard-rules.proに以下を追記で解決

-keep class android.support.v7.widget.SearchView { *; }

他にもProGuardの影響でデバッグでは動いていてもリリースビルドで動かなくなる事があるので、リリース前にインストールして確かめましょう。

スポンサーリンク

フォローする