2014-11-22 4 views
0

내가 onCreateOptionsMenu가 호출 setActionView를 사용하여 기본 뷰를 대체 할 때 (내가 CardScrollView을 사용할 수 있습니다 알고 해요 menuItem 잡기 위해 시도하고있어 CardScrollAdapter하지만 이것은 많은 작업으로 메뉴를 실행하는 것입니다.) 구글 유리 GDK :이 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

안녕하세요. 도움을 주셔서 감사합니다. 나는 실제로 카드의 레이아웃을 다른 레이아웃으로 덮어 쓰고 싶었다. 따라서 왜 카드의 견해를 바꾸고 싶었습니다. –