gpt4 book ai didi

java - setBackgroundDrawable 工作正常;直到按下另一个按钮,为什么?

转载 作者:行者123 更新时间:2023-11-29 06:00:56 29 4
gpt4 key购买 nike

在我的应用程序中,我有 4 个主按钮,外加 2 个。这 4 个按钮在主 Activity 开始时声明。

Button button1, button2, button3, button4;
button1 = (Button) findViewById(R.id.button1);
button1.setTag("blue");

(每个按钮都有一个标签,设置方式与按钮1相同)

我想在按下时循环显示不同颜色的四个按钮。我管理这个;

public void button1(View v) {

if ("blue".equals(button1.getTag())) {
button1.setBackgroundDrawable(getResources().getDrawable(
R.drawable.brown));
button1.setTag("brown");
} else if ("brown".equals(button1.getTag())) {
button1.setBackgroundDrawable(getResources().getDrawable(
R.drawable.red));
button1.setTag("red");
} else if //...etc

这一切都很好,直到我按下两个按钮中的任何一个,其中一个按钮的示例代码

    public void back(View v) {
setContentView(R.layout.main);
t = new TextView(this);
t = (TextView) findViewById(R.id.textView1);
t.setText("");
}

一旦我按下两个按钮中的任何一个,颜色就会变回 xml 文件中设置的原始可绘制对象

android:background="@drawable/blue"

现在,当我按下 4 个主要按钮时,drawable 不会改变,但我肯定知道它正在重新标记,那么为什么在我按下按钮后它不会改变 drawable?

最佳答案

如果您的“两个按钮”onClick 处理程序调用 Activity.setContentView(int),那么所有按钮都将重置为它们在原始 XML 布局中的指定方式。 新 View 将被放大并且这些 View 将没有标签(您似乎没有在调用 setContentView 后重新设置标签)。空标签不会匹配您的任何颜色字符串,因此您的按钮不会循环其背景。

如果您想保持 View 的原样,则不要重置 Activity 的内容 View 。在大多数情况下,setContentView 在 Activity 的每个生命周期内只被调用一次,尽管显然也有一些异常(exception)。

关于java - setBackgroundDrawable 工作正常;直到按下另一个按钮,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10117257/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com