【问题标题】:Why does boolean variable not show any result on false?为什么布尔变量不显示任何结果为假?
【发布时间】:2016-05-07 10:53:30
【问题描述】:

我尝试在我的Activity 中使用boolean 变量。如果truefalse,我尝试检查boolean 值。但我只得到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”时,我只希望它作为“编辑模式”。我有事件和添加按钮以转到“添加事件”活动。如果从“添加”按钮开始,它应该是“保存模式”,或者如果使用“事件视图”,它应该是“编辑模式”。

如何做到这一点?

【问题讨论】:

  • 如果您进入保存模式,则变量为假...
  • 布尔值的默认值为 false。我对么? @Sami Kuhmonen
  • if(editMode)//false 错误! 这意味着:if(editMode == true) //false

标签: java android variables boolean


【解决方案1】:

你声明了变量editMode,但是你还没有给它赋值,所以它总是正确的。要从putExtra() 获取数据,您必须在您开始的活动中调用Intent.get__Extra()

在您的add event activity 中写下:

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

【讨论】:

  • 是的,我已经这样做了。但我越来越真实。如果我点击添加按钮,我希望它是假的。不是事件。
  • 您的代码显示您在点击时将其设置为 true。如果你想在你的添加按钮上设置为 false
【解决方案2】:

否定你的第一次检查,你应该很好

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 为 true,则记录“编辑模式”,否则记录“保存模式”

【讨论】:

  • 感谢您的回答。请检查我编辑的问题。 @aemorales1
  • 需要查看执行 if 检查的方法的定义。
  • 对不起哪个方法? @aemorales1
  • 执行 if else 的地方,请参阅@NoImNotNull 的答案,我很确定会回答您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
相关资源
最近更新 更多