2

Я обновил holoeverywhere версии в моем проекте, так что я не больше использовать ActionBarSherlock (ABS), но ActionBarCompact (ABC)Не может Добавить ActionView в ActionBar, используя ActionBarCompat из Holoeverywhere

У меня есть проблема в при использовании MenuItemCompat.getActionView (aMenuItem) Я всегда получаю нулевое значение.

Точный код у меня есть:

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) всегда нулевое значение

Мой файл меню 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> 

Как могу ли я преодолеть это? Я попытался придерживаться аналогичного подхода к тому, что объясняется для SearchViewItem в документации по Android, но не имеет успеха вообще

Заранее спасибо.

ответ

4

Я думаю, что проблема заключается в том, что ABC не поддерживает пользовательские ActionLayouts. Я нашел человека, который faced a similar problem which he resolved successfully. Добавляя SearchView, обратите внимание, что он использовал приложение: actionViewClass. Не могли бы вы попытаться использовать приложение: actionLayout и посмотреть, работает ли оно для вас?

+2

Решенный! Решение, которое вы предлагаете, является правильным. Так же просто, как изменить андроид: actionLayout для приложения: actionLayout. Спасибо – anuf

+0

Сохранено в день! Этот комментарий был также полезен! –

Смежные вопросы