为什么我的if语句不能正常工作?

时间:2015-06-21 15:10:57

标签: java android

我在onClick监听器中有2个按钮的if语句,当我只按一个按钮时它工作正常但是当我按下另一个时我认为if函数互相干扰,所以我添加了a登录以了解正在调用哪些方法但是正确调用了所有方法,我尝试了所有我知道的内容以修复此错误但我不能。

以下是应该发生的事情:当我按下设置按钮时,我有两个按钮(设置,存储),它会以动画的形式查看settingsLayout(LinearLayout),如果我再次按下相同的按钮则删除{{1}还有动画,如果我按下商店按钮,它会移除可见的settingsLayout(LinearLayout)并用动画观看settingsLayout(LinearLayout),当我按下商店按钮时,它会删除可见的storeLayout(LinearLayout)

以下是发生的情况:当我按下存储按钮然后按下设置(或反之亦然)当我按下任何按钮以移除可见布局时,其中一个已经消失的布局出现,然后两个都消失了动画

这是我的代码:

P.S storeLayout(LinearLayout)检查按钮是否可见

if(visible)

1 个答案:

答案 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);
}