Android Studio(Java):直接用Java而不是.xml更改按钮的颜色

Android Studio(Java):直接用Java而不是.xml更改按钮的颜色,java,android,android-studio,Java,Android,Android Studio,我正在编写一个小测验游戏,我想解锁类别。这些类别已锁定(灰色),在对话框中解锁后应为橙色。我的问题是,颜色不会直接改变,而是在再次关闭和打开活动之后。我不喜欢它,因为用户对颜色不会直接改变感到困惑。我认为这是正确的方法: button_fun.setBackgroundColor(Color.parseColor("#FBBC55")); 你知道我做错了什么吗?谢谢大家! 编辑(更多代码,如果您需要更多,请告诉我): 活动的重要部分1 @R

我正在编写一个小测验游戏,我想解锁类别。这些类别已锁定(灰色),在对话框中解锁后应为橙色。我的问题是,颜色不会直接改变,而是在再次关闭和打开活动之后。我不喜欢它,因为用户对颜色不会直接改变感到困惑。我认为这是正确的方法:

            button_fun.setBackgroundColor(Color.parseColor("#FBBC55"));

你知道我做错了什么吗?谢谢大家!

编辑(更多代码,如果您需要更多,请告诉我): 活动的重要部分1

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void applyunlock(String kat) {
        preferences = getSharedPreferences(KEY,MODE_PRIVATE);
        preferencesEditor = preferences.edit();

        if(kat == "Geografie"){
            geografie.setChecked(true);
            geografie.setClickable(true);
            button_geografie = findViewById(R.id.button_geografie);
            button_geografie.setBackgroundColor(Color.parseColor("#FBBC55"));
            unlock_geografie = true;
            preferencesEditor.putBoolean("unlock_geografie", true);
}

谢谢

也许你没有透明的foreground?
尝试在按钮上使用postInvalidate()

可能您没有透明ForegTound?
尝试在按钮上使用postInvalidate()

我已经这样做了。颜色非常好。我的问题是,颜色不会直接改变,但在改变活动并返回之后。你需要更多的代码吗?如果你能分享我已经做过了,那就太好了。颜色非常好。我的问题是,颜色不会直接改变,但在改变活动并返回之后。你需要更多的代码吗?如果你能分享就太好了谢谢,postInvalidate()解决了这个问题!谢谢,postInvalidate()解决了这个问题!