应用程序忽略布尔值?

时间:2016-07-25 10:14:03

标签: android boolean

我目前正在尝试创建一个简单的,以便当布尔值设置为false时,应用程序' GoogleAPIClient无法连接。

然而,由于某种原因,即使在布尔值设置为false之后,应用程序也会通过并连接。我该如何解决这类错误?

有关此错误的代码段如下:

protected void onStart() {
    super.onStart();
    //Build resources if null
    if (mLocationClient == null) {
        buildLocationClient();
    }
    if (settings == null) {
        settings = getSharedPreferences(PREFS_NAME, 0);
    }

    Boolean RequestingLU = settings.getBoolean("RequestingLU", true);
    if (RequestingLU) {
        mLocationClient.connect();
        Toast.makeText(this, "You have connected", Toast.LENGTH_LONG).show();
    }
    else {
        mLocationClient.disconnect();
        Toast.makeText(this, "Don't connect please", Toast.LENGTH_LONG).show();
        StoppedMessage();
    }

}

这是buildLocationClient():

protected void buildLocationClient () {
    mLocationClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(LocationServices.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}

这是来自编辑设置

的其他活动的AlertDialog
            AlertDialog.Builder StopDialog = new AlertDialog.Builder(MainMenu.this);
            StopDialog.setTitle(R.string.Stop_Title);
            StopDialog.setMessage(R.string.Stop_Message);
            StopDialog.setPositiveButton(R.string.Stop_Button, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    editor.putBoolean("RequestingLU", false);
                    editor.apply();
                    Toast.makeText(MainMenu.this, "You have stopped the app", Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                }
            });

一些观察

如果RequestingLU设置为false,则不要连接" toast首先出现,然后"你已连接"接下来。

如果RequestingLU设置为true,则不要连接"吐司没有出现。

交换RequestingLU for!RequestingLU不起作用,仍然会产生相同的效果。

我已经测试了RequestLU设置,如果我改变它,它会返回false。问题似乎来自应用程序没有正确检查布尔值。

首次启动应用程序时,尽管默认参数声明默认为true,但应该在RequestingLU为false时触发的AlertDialog。

将默认值从true更改为false根本不起作用。

1 个答案:

答案 0 :(得分:0)

变化

Boolean RequestingLU = settings.getBoolean("RequestingLU", true);

Boolean RequestingLU = settings.getBoolean("RequestingLU", false);

getBoolean()函数返回第二个参数或传递的默认值(在本例中为“true”),如果没有为该键定义值(即“RequestingLU”)