我在onClick
监听器中有2个按钮的if语句,当我只按一个按钮时它工作正常但是当我按下另一个时我认为if函数互相干扰,所以我添加了a登录以了解正在调用哪些方法但是正确调用了所有方法,我尝试了所有我知道的内容以修复此错误但我不能。
以下是应该发生的事情:当我按下设置按钮时,我有两个按钮(设置,存储),它会以动画的形式查看settingsLayout(LinearLayout)
,如果我再次按下相同的按钮则删除{{1}还有动画,如果我按下商店按钮,它会移除可见的settingsLayout(LinearLayout)
并用动画观看settingsLayout(LinearLayout)
,当我按下商店按钮时,它会删除可见的storeLayout(LinearLayout)
。
以下是发生的情况:当我按下存储按钮然后按下设置(或反之亦然)当我按下任何按钮以移除可见布局时,其中一个已经消失的布局出现,然后两个都消失了动画
这是我的代码:
P.S storeLayout(LinearLayout)
检查按钮是否可见
if(visible)
答案 0 :(得分:0)
试试这个:
@Override
public void onClick(View v) {
if(visible){
switch (v.getId()){
case R.id.store:
if(!storeVisible){
Log.e("MSG", "If !storeVisible called");
if(settingsVisible){
setViewGone(settingsLayout);
settingsVisible = false;
setViewVisible(storeLayout);
storeVisible = true;
Log.e("MSG", "If !storeVisible and settingsVisible called");
return;
} else {
setViewVisible(storeLayout);
storeVisible = true;
Log.e("MSG", "If !storeVisible and else called");
settingsLayout.setVisibility(View.GONE);
setViewGone(storeLayout);
storeVisible = false;
Log.e("MSG", "else if storeVisible called");
return;
}
}
} else {
store.setClickable(false);
Log.e("MSG", "else clickable called");
}
break;
case R.id.settings:
if(!settingsVisible){
Log.e("MSG", "If !settingsVisible called");
if(storeVisible){
setViewGone(storeLayout);
storeVisible = false;
setViewVisible(settingsLayout);
settingsVisible = true;
Log.e("MSG", "If !settingsVisible and storeVisible called");
return;
} else {
setViewVisible(settingsLayout);
settingsVisible = true;
Log.e("MSG", "If !settingsVisible and else called");
storeLayout.setVisibility(View.GONE);
setViewGone(settingsLayout);
settingsVisible = false;
Log.e("MSG", "else if settingsVisible called");
return;
}
}
} else {
settings.setClickable(false);
Log.e("MSG", "else clickable called");
}
break;
}
public void setViewVisible(View view){
view.setVisibility(View.VISIBLE);
view.startAnimation(expandTop);
}
public void setViewGone(View view){
view.setVisibility(View.GONE);
view.startAnimation(retractTop);
}