java - 如何在更改sharedpreferences数据后自动更改android menuItem数据?

标签 java android

我的应用程序上有共享首选项,并且来自不同的 fragment 和 Activity ,我更改了共享首选项数据。但我有一个带有整数值的菜单项。因此,当任何 Activity 更改/更新共享偏好数据时,都应该更新它。

示例:它是总金额,就像用户从另一个 Activity/fragment 购买某些产品一样,价格应该更新。

这张截图可以帮助您更好地理解。 https://prnt.sc/s26pl0

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search_bar, menu);
        pointsMenuItem =menu.findItem(R.id.points); 
pointsMenuItem.setTitle(String.valueOf(SaveSharedPreference.getPoints(getApplicationContext())));
        pointsMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                pointsMenuItem.setTitle(String.valueOf(SaveSharedPreference.getPoints(getApplicationContext())));
                return false;
            }
        });

        return true;
    }

最佳答案

当用户点击购买商品后(共享首选项值更新)添加 invalidateOptionsMenu() 方法

invalidateOptionsMenu()将强制重新加载 onCreateOptionsMenu

希望这对您有帮助...

关于java - 如何在更改sharedpreferences数据后自动更改android menuItem数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61301720/

相关文章:

android - 更新后如何自动打开启动器应用程序?

android - android studio中drawable文件夹的路径

java - 在 JBoss AS 6 中监听登录事件

java - 编辑文本的粘贴选项

java.util.prefs.Preferences.put() 有效,但 Preferences.nodeExists() 总是返回 false

java - Encode Jwt 中的结果登录

java - 将 Android 自定义 ImageView 转换为 Xamarin.Android

java - Swing Worker 和普通线程之间的区别?

java - 使用 MenuBar 切换面板

安卓 :WindowManager$BadTockenException on Spinner Click