Java 为什么我的if语句不正确?
我在两个按钮的Java 为什么我的if语句不正确?,java,android,Java,Android,我在两个按钮的onClick侦听器中有一个if语句,当我只按下一个按钮时,它工作正常,但当我按下另一个按钮时,我认为if函数相互干扰,因此我添加了一个日志,以便知道调用了哪些方法,但所有方法都被正确调用,为了纠正这个错误,我尽了我所知的一切努力,但我做不到 下面是应该发生的情况:我有两个按钮(设置,存储),当我按下设置按钮时,它会查看带有动画的settingsLayout(LinearLayout),如果我再次按下相同的按钮,它也会删除带有动画的settingsLayout(LinearLayo
onClick
侦听器中有一个if语句,当我只按下一个按钮时,它工作正常,但当我按下另一个按钮时,我认为if函数相互干扰,因此我添加了一个日志,以便知道调用了哪些方法,但所有方法都被正确调用,为了纠正这个错误,我尽了我所知的一切努力,但我做不到
下面是应该发生的情况:我有两个按钮(设置,存储),当我按下设置按钮时,它会查看带有动画的settingsLayout(LinearLayout)
,如果我再次按下相同的按钮,它也会删除带有动画的settingsLayout(LinearLayout)
,如果我按下store按钮,它会移除可见的设置布局(LinearLayout)
和带有动画的视图storeLayout(LinearLayout)
,当我按下store按钮时,它会移除可见的storeLayout(LinearLayout)
下面是发生的情况:在我按下store按钮之后,然后是settings(设置)(反之亦然),当我按下任何按钮以移除可见布局时,其中一个已经消失的布局出现,然后随着动画一起消失
这是我的密码:
p.Sif(visible)
检查按钮是否可见
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.store:
if(visible){
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");
return;
}
} else if (storeVisible) {
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(visible){
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");
return;
}
} else if (settingsVisible) {
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);
}
试试这个:
@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);
}
什么是
if(可见){
它是做什么的?@Siva它检查按钮是否可见,是否有一个是问题…每次检查两个按钮的可见性时..在任何情况下,只检查正在操作的按钮的可见性…更改代码并检查now@Siva它们是一组按钮,而不仅仅是2个,它们要么可见,要么不可见当另一个按钮不可见时,不能有一个可见按钮。这意味着一次可以看到所有按钮,或者一次不能看到所有按钮。你可以添加屏幕快照吗?更改了逻辑。再试一次…检查语法一次我现在没有exlipse。