gpt4 book ai didi

android-asynctask - 如果从内部调用 API,onPrepareOptionsMenu 的行为会很奇怪

转载 作者:行者123 更新时间:2023-12-04 18:06:52 25 4
gpt4 key购买 nike

我需要根据 API 调用响应启用和禁用菜单项,并且每次出现菜单时都必须调用它。

我需要异步任务,因为我必须显示进度条

    @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 并在我触摸选项菜单时显示菜单。

最佳答案

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

注释掉进度对话框代码,其余代码正常,按预期工作

注:

  • 您已调用 super.OnPrepareOptionsMenuOnPostExecute (用户界面
    线程)
  • 由于不需要进度条,请不要删除 AsyncTask
    否则应用我的崩溃
  • 关于android-asynctask - 如果从内部调用 API,onPrepareOptionsMenu 的行为会很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870578/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com