以前、ExpandableListActivityをFragmentに以降しようと思って調べてみた時に、ExpandableListFragmentは公式には存在しないことがわかりました。
そこで、調べていく中で、非公式ならあるらしいと言うことがわかりました。
ExpandableListFragment - OrangeSignal ブログ
今回、ActionBarの実装に、ActionBarSerlockを利用しているのですが、ああ、これもないよね。
なので、SherlockListFragmentの実装を参考に(ほぼコピペで済んだ)、SherlockExpandableListFragmentを作ってみました。
コードは次の通り。
import android.app.Activity; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.internal.view.menu.MenuItemWrapper; import com.actionbarsherlock.internal.view.menu.MenuWrapper; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; public class SherlockExpandableListFragment extends ExpandableListFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { private SherlockFragmentActivity mActivity; public SherlockFragmentActivity getSherlockActivity() { return mActivity; } @Override public void onAttach(Activity activity) { if (!(activity instanceof SherlockFragmentActivity)) { throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity."); } mActivity = (SherlockFragmentActivity)activity; super.onAttach(activity); } @Override public void onDetach() { mActivity = null; super.onDetach(); } @Override public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) { onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater()); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { //Nothing to see here. } @Override public final void onPrepareOptionsMenu(android.view.Menu menu) { onPrepareOptionsMenu(new MenuWrapper(menu)); } @Override public void onPrepareOptionsMenu(Menu menu) { //Nothing to see here. } @Override public final boolean onOptionsItemSelected(android.view.MenuItem item) { return onOptionsItemSelected(new MenuItemWrapper(item)); } @Override public boolean onOptionsItemSelected(MenuItem item) { //Nothing to see here. return false; } }
- 作者: Zigurd Mednieks,Laird Dornin,G. Blake Meike,Masumi Nakamura,永井勝則
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/02/17
- メディア: 大型本
- クリック: 22回
- この商品を含むブログ (7件) を見る