2014-04-28 4 views
0

onCreateOptionsMenu 항목을 동적으로 변경해야합니다. 나는 웹 서비스에서 항목들을 가져왔다. 그러나 서비스는 onCreate()AsyncTask 클래스에서 호출되므로 서비스의 데이터가 도착하기 전에 onCreateOptionsMenu이 호출되고 NullPointerException을 반환합니다. 여기웹 서비스에서 onCreateOptionsMenu 항목 추가

내가 함수를 호출 오전 방법은 다음과 같습니다

@Override 

public boolean onCreateOptionsMenu(Menu menu) { 

    // super.onCreateOptionsMenu(menu); 

    getMenuInflater().inflate(R.menu.action_bar_menu, menu); 
    item = menu.findItem(R.id.CurrentUser); 
    UserName = con.getResources().getString(R.string.WelcomeUser) + " " 
      + UserName + "!"; 
    item.setTitle(UserName); 

    if (IsCorporateAccount) { 
     menu.getItem(6).setVisible(true); 
    } else { 
     menu.getItem(6).setVisible(false); 
    } 

    objGetBalanceDetails.CreateMenu(menu); 

    // Menu menu1 = null; 
    // menu1.findItem(R.id.Home).setVisible(false); 
    return true; 
} 
+0

내 대답은 도움이 되나요 ?? :) – Hardik

답변

0

당신이 잡을 수있는 메뉴 메뉴

private Menu mMenu; 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.myMenu, menu); 
    mMenu = menu; 
    } 

onCreateOptions과 메뉴의 예는 항목을 추가 또는 제거에서 변경 한 후에을, 당신은 invalidateOptionsMenu();를 호출 할 수 있습니다 (api> 11 지원) 메뉴를 업데이트하십시오.

+0

optionsmenu를 채우는 함수는 또 다른 자바 파일이며 웹 서비스에서 데이터를 가져 오는 중입니다. 문제는 지연입니다 .. 중단 점을 전환하고 지연을 생성하면 모든 것이 잘 작동합니다 .. – HussainMarvi

+0

asyntask finishd를 알릴 때 위임자와 같은 것을 만들 수 있습니다. 그래서 그 후에는 메뉴를 직접 작성하십시오. –