Java 我需要以编程方式动态修改我的绘图

Java 我需要以编程方式动态修改我的绘图,java,android,android-drawable,android-button,Java,Android,Android Drawable,Android Button,我必须对按钮应用drawable,但在我单击按钮之前第一次发生的情况是,按钮drawable始终为R.drawable.up,即使条件为条件b int btnDrawable = R.drawable.up; if(Condition a){ btnDrawable = R.drawable.up; } else if(Condition b){ btnDrawable = R.drawable.down; } mbtn.setBackground(getResources().ge

我必须对按钮应用drawable,但在我单击按钮之前第一次发生的情况是,按钮drawable始终为R.drawable.up,即使条件为条件b

int btnDrawable = R.drawable.up;

if(Condition a){
  btnDrawable = R.drawable.up;
}
else if(Condition b){
  btnDrawable = R.drawable.down;
}

mbtn.setBackground(getResources().getDrawable(btnDrawable));

可能只是
条件a
也是真的,所以它从不检查
条件b

你试过调试吗?(单击带有第一个if的行的右侧,然后单击运行图标旁边的错误图标运行bu。代码停止后,检查
条件a
条件b
的值)

if(Condition a){
  btnDrawable = R.drawable.up;
}
else if(Condition b){
  btnDrawable = R.drawable.down;
}

mbtn.setBackground(getResources().getDrawable(btnDrawable));
onClick()
onTouch()方法中。它应该会起作用。另外,正如@Miku所说的,可能条件a始终为真,您可能希望附加一个调试器并检查它


*如果它仍然不起作用,我建议您粘贴完整代码。

我将上述代码放在错误的位置,现在我在设置视图时调用了此代码,它对我很好

请提供一个最小值,可复制的示例,以便我们可以帮助您解决所面临的问题。要么没有一个条件是正确的,要么两个条件都是正确的。试着调试这两个条件。以这个为例,我有一个弹出对话框,当我打开它时,条件是“b”,所以有一个按钮应该带有“向下”的可绘制按钮,但在这种情况下,它总是显示“向上”按钮可绘制,直到我触摸它,它在onTouch方法中也有相同的条件集。你介意发布条件a和b吗?我的onTouch方法具有与上面相同的条件,所以当我触摸按钮时,它携带正确的可绘制,但为什么一开始我弄错了?你能详细说明吗?是指第一次点击的
a
为真,之后的点击的
a
为假,而
b
为真,但不会改变该视图的背景吗?不,实际上我必须在其他地方用一个值初始化btnDrawable它给了我一个未初始化的编译时错误。这就是为什么你应该大部分发布完整代码的原因,这样人们会更快地发现错误。就我们所知,从您发布的代码片段来看,代码可以是从onCreate到onDestroy的任何地方。