我整天都在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语句时,应用程序甚至会在加载之前崩溃。
有什么想法吗?
答案 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之前不要开始做任何事情。