为什么布尔变量在false时不显示任何结果?

时间:2016-01-29 16:12:08

标签: java android variables boolean

我尝试在boolean中使用Activity变量。我尝试使用booleantrue来检查false值。但我只得到false的结果。

private boolean editMode;


if(editMode) //false
    {

        delete.setVisibility(View.INVISIBLE);

        Toast.makeText(getApplicationContext(),"Edit mode",Toast.LENGTH_LONG).show();
        Log.i("Log","Edit mode");
    }
else //true
    {
        Log.i("Log1","Save mode");
        Toast.makeText(getApplicationContext(),"Save mode",Toast.LENGTH_LONG).show();
    }

每次我都会收到“保存模式”。如何检查truefalse

我想用两种模式显示一个Activity。如果是“保存模式”,我想隐藏一个按钮。如果它是“编辑模式”,则该按钮应该是可见的。

如果点击我的活动,我想要boolean变量true。所以我尝试将boolean变量作为true传递。

eventView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            i = new Intent(getActivity(),AddEventActivity.class);
            editMode = true;
            i.putExtra("EditMode",editMode);
            startActivity(i);

        }
    });

所以现在每次都显示true值,即“编辑模式”。当我点击'eventView'时,我只想将它作为“编辑模式”。我有事件并添加按钮以转到“添加事件”活动。如果从“添加”按钮开始,它应该是“保存模式”,或者如果使用“eventView”,它应该是“编辑模式”。

怎么做?

2 个答案:

答案 0 :(得分:1)

否定你的第一张支票,你应该是好的

if(!editMode)//false
{

    delete.setVisibility(View.INVISIBLE);

    Toast.makeText(getApplicationContext(),"Edit mode",Toast.LENGTH_LONG).show();
    Log.i("Log","Edit mode");
}
else//true
{
    Log.i("Log1","Save mode");
    Toast.makeText(getApplicationContext(),"Save mode",Toast.LENGTH_LONG).show();
}

这意味着如果不是editMode。因为editMode是一个布尔值(基本类型),所以它不会以null开头。这意味着它需要一个默认值,在这种情况下该值为false。你的代码说如果editMode是真的log"编辑模式"否则记录"保存模式

答案 1 :(得分:1)

您声明了变量editMode,但您尚未为其分配任何内容,因此它始终为真。要从putExtra()获取数据,您必须在您开始的活动中致电Intent.get__Extra()

add event activity中,写下:

private boolean editMode;
Intent i = getIntent();
editMode = i.getBooleanExtra("EditMode", true);
if(editMode)
....