Android 操作栏菜单项

标签 android listview visibility menuitem

我的操作栏中有一个项目菜单(排序列表),我必须将其可见性设置为 VISIBLE/GONE(取决于列表大小 -> 是否为空)。

所以我需要检查 listview 是否为空并相应地设置该菜单项的可见性,我设法想出了一些代码来做到这一点(检查 onCreateOptionsMenu 中的 listview 大小并设置菜单项可见性) ,但问题是列表可以从同一个 Activity 或另一个 Activity 更改其内容,让我别无选择(IMO)只能再次检查 ListView 大小并在 onResume() 中设置可见性。

下一个问题来了:在 onResume() 中设置该项目的可见性将引发 NPE,因为我还没有初始化 MenuItem(在 onResume 之后调用 onCreateOptionsMenu)。 任何有关如何解决这种情况的想法都将不胜感激。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    getSupportMenuInflater().inflate(R.menu.main, menu);

    /*
     * initialize sortMenuItem so it can be used for turning visibility
     * on/off in onResume()
     */
    sortMenuItem = menu.findItem(R.id.menu_sort);

    return true;
}

@Override
public void onResume() {
    super.onResume();

    boolean isListEmpty = mInterviewsList.isEmpty();

    Log.d(LOG_TAG, "sortMenuItem is null? " + (sortMenuItem == null)); 
            // sortMenuItem is indeed null

    sortMenuItem.setVisible(isListEmpty);
    sortMenuItem.setEnabled(!isListEmpty);
    this.invalidateOptionsMenu();

}

最佳答案

您可以根据您的 ListView 大小和 onResume 调用在 onCreateOptionsMenu 中动态添加排序 MenuItem supportInvalidateOptionsMenu()如果您使用(google ActionBar compat lib)或类似的方法。

关于Android 操作栏菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18441234/

相关文章:

java - 我是否需要在其自己的文件中将枚举定义为 'public',以便它可以在自己的包外被识别?

javascript - 如何控制 Cesium3DTileset 中图元的可见性

java - 在php中从父类访问子属性

Android apk 通过扩展文件增量更新?

Android NDK,来自预建静态库的 header

android - 如何在列表中创建列表?

android - 不显示 RadioGroup 的 ListView

java - File() 构造函数中是否需要 .txt 扩展名?

android - super.function() 的位置是否会导致代码执行问题?

android - 使用字符串数组的 ListView