2

プロジェクトの holoeverywhere バージョンを更新したので、ActionBarSherlock (ABS) ではなく ActionBarCompact (ABC) を使用しなくなりました

私が抱えている問題は、MenuItemCompat.getActionView(aMenuItem) を使用すると、常に null 値を取得することです。

私が持っている正確なコードは次のとおりです。

public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.dashboard_menu, menu);

_itemNotifications = menu.findItem(R.id.notifications);
_containerViewItemNotifications = (LinearLayout) MenuItemCompat.getActionView(_itemNotifications);
_viewItemNotifications = (TextView) _containerViewItemNotifications.findViewById(R.id.ActionViewDashboard);
_containerViewItemNotifications.setOnClickListener(new OnClickListener() {
    @SuppressLint("NewApi")
    public void onClick(View v) {
    if (android.os.Build.VERSION.SDK_INT >= 16) {
        _viewItemNotifications.setBackground(getResources().getDrawable(R.drawable.qnotificacion_disbled));
    } else {
        _viewItemNotifications.setBackgroundDrawable(getResources().getDrawable(R.drawable.qnotificacion_disbled));
    }
    _viewItemNotifications.setText(R.string.empty);
    onOptionsItemSelected(_itemNotifications);
    }
});

_itemAnotateResult = menu.findItem(R.id.menu_anotate_result);

return super.onCreateOptionsMenu(menu);
}

ここで、MenuItemCompat.getActionView(_itemNotifications) は常に null 値です

私の XML メニュー ファイルは次のようなものです。

<?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/notifications"
    android:actionLayout="@layout/actionview_dashboard"
    android:title="@string/customize"        
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/menu_anotate_result"
    android:title="@string/anotate"
    android:visible="false"
    app:showAsAction="ifRoom|withText"/>

</menu>

どうすればこれを克服できますか?Androidのドキュメントで SearchViewItem について説明されているものと同様のアプローチに従おうとしましたが、まったく成功しませんでした

前もって感謝します。

4

1 に答える 1

4

問題は、ABC がカスタム ActionLayouts をサポートしていないという事実にあると思います。同様の問題に直面し、成功裏に解決した人を見つけました。SearchView を追加するときに、app:actionViewClass を使用したことに注意してください。app:actionLayout を使用してみて、うまくいくかどうかを確認していただけますか?

于 2013-10-09T19:37:06.750 に答える