我需要根据API调用响应启用和禁用菜单项,并且每次菜单出现时都必须调用它。
我需要asynctask,因为我必须显示进度栏
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
handleMenuItems(menu)
}
private void handleMenuItems(menu)
{
new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
//API call
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (progressDialog != null)
progressDialog.hide();
//necessary menu items are enabled and disabled
super.onPrepareOptionsMenu(menu);
}
@Override
protected void onPreExecute() {
if (progressDialog != null){
progressDialog.setMessage("Checking");
progressDialog.show();
}
super.onPreExecute();
}
}.execute();
}
每当我触摸选项菜单时,onPrepareOptionsMenu都会被调用,而选项菜单不会出现,然后当我再次按下它时,onPrepareOptionsMenu不会被调用,并且选项菜单会出现。
我希望每次调用该API时都可以调用该API,并在我触摸选项菜单时显示菜单。
您不应该在其中显示和隐藏进度对话框 OnPrepareOptionsMenu
注释掉进度对话框的代码,其余代码都可以,并且可以按预期工作
注意:
您呼吁super.OnPrepareOptionsMenu
在OnPostExecute
(UI线程)
由于不需要进度条,请不要删除AsyncTask,否则会导致我的崩溃
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句