我有两种方法:
addCard();
removeCard();
我总共有 6个按钮。
开头所有按钮都有onClick()
方法,addCard()
方法。
在我点击另一个按钮(第7个)后,所有其他6个应该将onClick()
方法从addCard()
更改为removeCard()
。
我如何这样做? 只是为了让你知道我的想法,我开始将这两种方法作为按钮的正常方法,所以他们将View v作为参数,任何方式真正地" swap"方法?
addCard():
public void addCard(View v){
switch (v.getId()){
case R.id.first :
demoniacList.add(new Demoniac());
first.setEnabled(false);
case R.id.second :
guardList.add(new Guard());
second.setEnabled(false);
case R.id.third :
masonsList.add(new Masons());
masonsList.add(new Masons());
third.setEnabled(false);
case R.id.fourth :
mediumList.add(new Medium());
fourth.setEnabled(false);
case R.id.fifth :
if (demoniacList.size() + guardList.size() + masonsList.size() +
mediumList.size() + villagerList.size() + werehamsterList.size() < players.size()-1) {
villagerList.add(new Villager());
} else {
villagerList.add(new Villager());
fifth.setEnabled(false);
}
case R.id.sixth :
werehamsterList.add(new Werehamster());
sixth.setEnabled(false);
}
}
答案 0 :(得分:1)
我会这样做的 -
public class MyActivity extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
...
mButton1.setOnClickListener(this);
mButton2.setOnClickListener(this);
...
mButton6.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case 1:
case 2:
...
case 6:
if(/* Button 7 is present / clicked */) {
removeCard();
} else {
addCard();
}
}
}
}
答案 1 :(得分:1)
使用下面代码中给出的布尔变量。
public class MainActivity extends Activity implements View.OnClickListener {
private boolean isAdd=true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mButton0.setOnClickListener(this);
mButton1.setOnClickListener(this);
...
mButton6.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case 0:
if(isAdd) {
addCard();
} else {
removeCard();
}
case 1:
if(isAdd) {
addCard();
} else {
removeCard();
}
...
case 6:
if(isAdd) {
addCard();
isCard=false;
} else {
removeCard();
isCard=true;
}
}
}
}
答案 2 :(得分:0)
您应该可以使用某种状态表示来执行此操作...也许在视图中?也许布尔showRemoveNotAddButton var?
然后只需在适当的处理方法中打开该var。
您的切换按钮单击处理程序应更改该布尔值,然后重新渲染。
渲染应该可以访问该布尔值,并且能够知道要渲染的按钮类型。