Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的if语句不正确?_Java_Android - Fatal编程技术网

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.S
if(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。