2013-08-10 4 views
0

3 가지 활동에 대한 작업 표시 줄에 새로 고침 버튼이 있습니다. 이 3 가지 활동은 BaseActivity에서 연장되었습니다. 그래서 한 번에 onCreateOptionsMenu(Menu menu) { //... } 메쏘드를 쓸 수 있습니다.메뉴 항목을 동적/즉시 변경하는 방법은 무엇입니까?

사용자가 아이콘을 클릭하면 아이콘을 refreshing 아이콘으로 변경하고 싶습니다.

클릭 및 새로 고침 작업을 처리 할 수 ​​있으며 아이콘을 변경하지만 작업이 완료되면 변경 아이콘을 다시 처리 할 수 ​​없습니다.

BaseActivity에서 연장 된 활동에있는 방법이 작업을 마친 때를 아는 가장 좋은 방법은 무엇입니까? BaseActivityonOptionsItemSelected() 메서드에서 처리하려면 interface을 사용해야합니까?

답변

0

아이콘을 변경하려면 invalidateOptionsMenu() (onCreateOptionsMenu(Menu menu)이 호출 됨)으로 전화를 걸어 onCreateOptionsMenu(Menu menu) 내의 아이콘을 변경하는 일부 로직을 추가하십시오.

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.id.menu, menu); 
    if(isRefreshing()){ 
     menu.findItem(R.id.refresh).setIcon(R.drawable.refreshing); 
    }else{ 
     menu.findItem(R.id.refresh).setIcon(R.drawable.refresh); 
    } 
    } 

상기 코드는 메뉴 리소스 R.id.menu 팽창 및 isRefreshing()의 결과에 따라 아이콘을 변경한다.

+0

나는 그것이 잠을 못 이루기 때문에 놓친 것 같다. 어쨌든 여기에 약간의 문제가 있습니다. 내 activity에서 invalidateOptionsMenu()를 호출하면 onCreateOptionsMenu() 메소드가 트리거되지 않습니다. 나는 무엇을 놓치고 있습니까? – JustWork

+0

API 버전 11 이상입니까? – Ljdawson

+0

예, API 버전 17입니다. – JustWork

관련 문제