如果用booleans android声明

时间:2013-01-23 16:32:11

标签: java android eclipse if-statement boolean

我整天都在if语句中遇到布尔问题而且现在真的开始让我烦恼!我已经在这里查看了其他Android线程,解决方案似乎无法正常工作。

我的代码就是这样开始的:

public class MainActivity extends Activity 
{
public static boolean isSignedIn = false;       

public final static String USERNAME_MESSAGE = "com.example.libnoise.MESSAGE";
Button btnSignIn;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);       


    btnSignIn = (Button) findViewById(R.id.btnSignIn);
    Intent intent = getIntent();
    String message = intent.getStringExtra(PlayZone.USERNAME_MESSAGE); 

    if(isSignedIn == false))
    {
   btnSignIn.setText("SignIn");
    }
    else
    {       
         btnSignIn.setText(message);
    }        
}

然后我有一个想法,它使它不像其他语言,我只需要一个“=”符号所以我这样做:

    if(isSignedIn = false)
    {
   btnSignIn.setText("SignIn");
    }
    else
    {       
         btnSignIn.setText(message);
    }  

这不起作用,当我开始在线查找时,在此处找到上一个帖子后将其更改为以下内容:

    if("false".equals(isSignedIn))
    {
   btnSignIn.setText("SignIn");
    }
    else
    {       
         btnSignIn.setText(message);
    }  

现在这对我来说并不合适,但希望它能起作用但事实并非如此。

因为这是它首先加载的MainActivity,但是因为我添加了所有这些,所以当我取出if语句时,应用程序甚至会在加载之前崩溃。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

if (isSignedIn == false)

完全正确。 (你也可以写if (!isSignedIn),但这只是风格问题。)

请注意,由于您永远不会更改isSignedIn的值(至少在您向我们展示的代码中没有),因此它始终为false

答案 1 :(得分:3)

如果使用布尔值的语句与使用Java的方式相同,==是正确的比较方法

代码中的问题是额外的括号

if (isSignedIn == false) <击> )

答案 2 :(得分:3)

我认为你可以简单地使用

if(!isSignedIn)
{
  btnSignIn.setText("SignIn");
}
else
{       
  btnSignIn.setText(message);
}        

你遵循的方式也是正确的我没有发现任何错误,除非你在条件if(isSignedIn == false))

条件下使用额外的括号

答案 3 :(得分:2)

只是为了偏离问题,但指出可能是你的问题,你的空指针可能是因为你正在访问一个可能还没准备好设置文本的UI对象。

虽然某些API版本可以很好地处理你正在做的事情,但我发现许多设备/ API组合根本没有准备好从xml中的内容改为onStart。一般指导是在onCreate中加载数据,但在onStart之前不要开始任何事情。