目前我的按钮不起作用。前两次按下任何按钮时,所有按钮都会受到影响,而不仅仅是已按下的按钮。
交换:
seatButton[i].setAlpha(255);
对于:
seatButton[i].setImageResource(0x7f020007)
我的代码有效!只有我按下的按钮才会生效。为什么?
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
table = new Table(); //Creates Table
seatButton = new ImageButton[10]; //Creates Array of buttons
seatStats = new TextView[10]; //Creates array for stat panels
//Creates longClickListener, used for players to sit in or out.
longClickListener = new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
for(int i=0; i<10; i++)
{
//Each seat[i] will correspond with each imageButtoni+1
if(v.getId() == (getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud")))
{
//If the seat is empty fill it, place a player in the seat and change the button from translucent to opaque
if(table.seats[i].getState().equals("empty"))
{
seatButton[i].setAlpha(255);
//seatButton[i].setImageResource(0x7f020000);
table.seats[i].sit(new Player());
seatStats[i].setVisibility(View.VISIBLE);
Toast.makeText(GUI.this, table.seats[i].getState(), Toast.LENGTH_SHORT).show();
}
//If the seat is full, empty it
else
{
seatButton[i].setAlpha(80);
//seatButton[i].setImageResource(0x7f020007);
table.seats[i].sitOut();
seatStats[i].setVisibility(View.INVISIBLE);
Toast.makeText(GUI.this, table.seats[i].getState() + i, Toast.LENGTH_SHORT).show();
}
}
}
return true;
}
};
//Assigns the buttons and stats panels defined in the layout xml to their appropiate java arrays. Also sets clickListeners to buttons.
for(int i = 0; i < 10; i++)
{
seatButton[i] = (ImageButton) findViewById(getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"));
seatStats[i] = (TextView) findViewById(getResources().getIdentifier("textView" + (i+1), "id", "en.deco.android.livehud"));
seatButton[i].setOnLongClickListener(longClickListener);
seatButton[i].setAlpha(80);
}
最佳答案
您正在与 ==
进行字符串比较,这意味着您正在比较引用而不是值。这可能不是您想要的,因此您应该将其更改为:
if(table.seats[i].getState() == "empty") { ... }
至:
if(table.seats[i].getState().equals("empty")) { ... }
除此之外,根据setAlpha(float alpha)
(API 11方法,仅供引用)的文档,传递的float应该在[0... 1]
。
您要设置的图像资源是 ImageManager 的 R.id.transparent_background
。这可能表明您的逻辑有效,但错误确实出在设置 alpha 值的某个地方。
关于java - 为什么 setAlpha() 作用于我的所有按钮,而 setImageResource() 只作用于一个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022980/