4

(Android 3.0+) Android Honeycomb のアクション バーのアクション アイテムとして使用するスピナーを作成するにはどうすればよいですか? Action Bar の LIST モードがほとんどそれを行うことは理解していますが、代わりに TAB モードを使用したいと思います。私の知る限り、両方を同時に持つことはできないので、代わりにスピナーをアクション アイテムとして使用しようとしています。

ここにJavaがあります:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.spin_menu, menu);
    Spinner spin = (Spinner) findViewById(R.id.spin_widget);
    ArrayAdapter<CharSequence> spinAdaptor = ArrayAdapter.createFromResource(
         this, R.array.spinlist, android.R.layout.simple_spinner_item);
    spinAdaptor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spin.setAdapter(spinAdaptor);
    return super.onCreateOptionsMenu(menu);
}

Eclipse ではエラーは表示されませんが、プログラムを実行すると強制終了します。まったくの初心者向けの提案はありますか?

更新 - logcat エラー重大度ログを追加しました: (少なくとも、それは私が考えていることです)

06-27 18:36:59.496: エラー/AndroidRuntime(493): 致命的な例外: メイン
06-27 18:36:59.496: エラー/AndroidRuntime(493): java.lang.NullPointerException
06-27 18:36:59.496:エラー/AndroidRuntime(493): me.ics.icsActivity.onCreateOptionsMenu(icsActivity.java:84)
06-27 18:36:59.496: エラー/AndroidRuntime(493): android.app.Activity.onCreatePanelMenu(Activity.java) :2389)
06-27 18:36:59.496: エラー/AndroidRuntime(493): com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:347)
06-27 18:36:59.496: エラー/AndroidRuntime(493): com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:647) で
06-27 18:36:59.496: エラー/AndroidRuntime(493): com.android.internal.policy.impl.PhoneWindow$2.run(PhoneWindow.java:2581)
06-27 18:36:59.496: エラー/AndroidRuntime (493): android.os.Handler.handleCallback(Handler.java:587)
06-27 18:36:59.496: エラー/AndroidRuntime(493): android.os.Handler.dispatchMessage(Handler.java:92) で
06-27 18:36:59.496: エラー/AndroidRuntime(493): android.os.Looper.loop(Looper.java:132) で
06-27 18:36:59.496: エラー/AndroidRuntime(493): Android で。 app.ActivityThread.main(ActivityThread.java:4025)
06-27 18:36:59.496: エラー/AndroidRuntime(493): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で
06-27 18:36:59.496: エラー/AndroidRuntime(493): java.lang.reflect.Method.invoke(Method.java:491) で
06-27 18:36:59.496: エラー/AndroidRuntime(493): でcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-27 18:36:59.496: エラー/AndroidRuntime(493): com.android.internal.os.ZygoteInit.main(ZygoteInit) で.java:599)
06-27 18:36:59.496: エラー/AndroidRuntime(493): dalvik.system.NativeStart.main(ネイティブ メソッド) で

4

2 に答える 2

1

私の推測では、あなたは を持っていないというSpinnerことandroid:idですR.id.spin_widget

Spinnerをアクション アイテムとして配置しようとしている場合、質問が述べているように、 をSpinner介して取得するのではfindViewById()なく、問題の項目を介して取得します。これを実証するサンプル プロジェクトを次に示します。これは、Honeycomb で動作するように実装されていますが、古いバージョンの Android でこのコードを正常にスキップすることもできます。getActionView()MenuItem

于 2011-06-27T19:05:18.013 に答える