java - ActionBar 刷新按钮

标签 java android android-studio android-actionbar

我在我的 ActionBar 上添加了一个刷新按钮,但问题是我的 ActionBar 上始终有这个刷新按钮。我听说我必须创建一个

这是我添加图标的位置:

 <item android:id="@+id/ofertasRefresh"
    android:icon="@drawable/ic_action_refresh"
    android:title="Refresh"
    android:alphabeticShortcut="r"
    android:orderInCategory="1"
    android:showAsAction="always" />

然后我在我的 Activity 中添加了这么多代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    this.optionsMenu = menu;
    MenuInflater inflater = getMenuInflater(); //ERROR<-----------
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu); // in Fragment cannot be applied <------------
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.airport_menuRefresh:

            // Complete with your code
            return true;
    }
    return super.onOptionsItemSelected(item);
}
public void setRefreshActionButtonState(final boolean refreshing) {
    if (optionsMenu != null) {
        final MenuItem refreshItem = optionsMenu
                .findItem(R.id.ofertasRefresh);
        if (refreshItem != null) {
            if (refreshing) {
                refreshItem.setActionView(R.layout.actionbar_indeterminate_progress);
            } else {
                refreshItem.setActionView(null);
            }
        }
    }
}

getMenuInflater()上说“无法解析该方法”,然后在“出现”中说“无法在 fragment 中应用”...

已编辑*

我认为我的问题集中在 MyActivity.java 然后我粘贴了 OnCreateOptionsMenuonOptionsItemSelected

MyActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // toggle nav drawer on selecting action bar app icon/title
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    // Handle action bar actions click
    switch (item.getItemId()) {
    case R.id.action_settings:
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

有办法解决这个问题吗?

最佳答案

如果您从 Activity 调用

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //this.optionsMenu = menu;
    //MenuInflater inflater = getMenuInflater(); //ERROR<-----------
    getMenuInflater().inflate(R.menu.main, menu);
    //return super.onCreateOptionsMenu(menu); // in Fragment cannot be applied <------------
    return true;
}

onCreateOptionsMenu 方法中扩充菜单。

并且,正如注释所说,只需从同一方法返回 true 即可。

如果从 fragment 调用,该方法看起来会略有不同:

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

关于java - ActionBar 刷新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822002/

相关文章:

Android 用户界面继承

android - Gradle编译旧项目

java - Mac OS X - 最后修改日期为 0

java - Thread.currentThread().interrupt() 在 Android 中不工作

android - 从java代码调用为Android编译的FFmpeg可执行文件的简单方法是什么?

android-studio - 生成aab和apk

android - 较新版本的 Android Studio 和只有两个可绘制目录 - drawable 和 drawable-v21

java - 是否有机会从现有本体中找到特定类并使用 jena 添加等效类

java - 线程无缘无故卡在 BlockingQueue.take

android - 无法使 FragmentPagerAdapter 更新 fragment 内容