2014-11-22 1 views
0

Я пытаюсь захватить menuItem когда onCreateOptionsMenu называется и переопределить вид по умолчанию с помощью setActionView (я знаю, я мог бы использовать CardScrollView и CardScrollAdapter, но это очень много работы, просто запустите меню и запустите).Google Glass ГДК: MENUITEM setActionView не соблюдается в onCreateOptionsMenu (не обновляет вид)

menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/test_item" 
     android:title="Test 1"> 

Я попытаюсь изменить это программно в onCreateOptionsMenu:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 

    View testView = new CardBuilder(this, CardBuilder.Layout.TEXT) 
      .setText("Test 2.") 
      .getView(); 

    MenuItem item = menu.findItem(R.id.test_item); 

    item.setActionView(testView); 

    return true; 
} 

Однако, когда я рассматриваю это меню опций через стекло, испытание 1 все еще показывает. Что я делаю не так?

+0

Есть ли причина, по которой вы не используете обычный способ создания меню? –

+0

Как обычно? –

ответ

1

Если вы хотите изменить название меню динамически, вы можете переопределить onPrepareOptionsMenu.

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem item = menu.findItem(R.id.test_item); 
    // may be if case to check the condition 
    // String title = titleShouldBe1 ? "Test 1" : "Test 2"; 
    // item.setTitle(title); 
    item.setTitle("Test 2"); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

Надеюсь, что это поможет.

+0

Привет, спасибо за вашу помощь. Я действительно хотел переопределить макет карты на другой макет. Поэтому я хотел изменить вид карты. –