2

ActionBarにスピナーを含めるために、この投稿のソリューションを使用しようとしています。最初はActionBarのNAVIGATION_MODE_LISTを使用していましたが、トラフビューをナビゲートするためにスピナーを使用したくありません(そのためのタブがあります)。だから私は2つのxmlを作成しました:

mode_spinner.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

options.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/menu_mode"
    android:actionLayout="@layout/mode_spinner"
    android:showAsAction="ifRoom"/>
</menu>

次に、フラグメントからそれを膨らませようとしました(SherlockFragment)

import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.options, menu);
    Spinner spinner = (Spinner) menu.findItem(R.id.menu_mode);
    spinner.setAdapter(mSpinnerAdapter);
    super.onCreateOptionsMenu(menu, inflater);
}

実行時に、このエラーが発生しました:

java.lang.ClassCastException:com.actionbarsherlock.internal.view.menu.MenuItemWrapperをandroid.widget.Spinnerにキャストできません

何か案が ?

4

1 に答える 1

7

そのビューにアクセスするにgetActionView()は、返された結果のアイテムを呼び出す必要があります。findItem()そこから操作できます。

また、単にチェック可能な項目のみを含むサブメニューを使用することも検討してください。

于 2012-05-21T19:45:25.043 に答える