如果从内部调用API,onPrepareOptionsMenu会很奇怪

Ven*_*nky 5 android-asynctask android-optionsmenu android-fragmentactivity

我需要根据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();

    }
Run Code Online (Sandbox Code Playgroud)

每当我触摸选项菜单时,都会调用onPrepareOptionsMenu并且不显示选项菜单,然后当我再次按下它时,不会调用onPrepareOptionsMenu并显示选项菜单.

每当我触摸选项菜单时,我希望每次都调用api并显示菜单.

Sha*_*ajo 4

您不应该显示和隐藏进度对话框OnPrepareOptionsMenu

注释掉进度对话框编码,其余代码都可以并且按您的预期工作

笔记:

  • 您已调用super.OnPrepareOptionsMenuOnPostExecuteUI 线程)

  • 由于不需要进度条,请勿删除 AsyncTask,否则应用程序会崩溃