代码非常简单。 我想在单击按钮时更改FrameLayout的图像。
以下语句不起作用:
if(framgLay.getForeground() == getDrawable(R.drawable.ic_launcher_background)
所以,我用下面的代码解决了这个问题。
但是,我不知道drawable
和getDrawable(R.drawable.ic_launcher_background)
分别引用不同对象的原因。
public class MainActivity extends AppCompatActivity {
FrameLayout fl1;
Drawable drawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fl1 = findViewById(R.id.fl1);
drawable = getDrawable(R.drawable.ic_launcher_background);
fl1.setForeground(drawable);
}
public void onClick(View v) {
if (fl1.getForeground() == drawable) {
fl1.setForeground(getDrawable(R.drawable.ic_arrow_drop_down_circle_black_24dp));
} else {
fl1.setForeground(drawable);
}
}
}
答案 0 :(得分:0)
原因是因为调用getDrawable(...)
时它将创建包含相同图像的drawable的新实例,而==
将比较这两个实例的引用。解决方法如下:
if (fl1.getForeground().pixelsEqualTo(drawable)) {
// here equals
}