我目前正在尝试创建一个简单的,以便当布尔值设置为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根本不起作用。
答案 0 :(得分:0)
变化
Boolean RequestingLU = settings.getBoolean("RequestingLU", true);
到
Boolean RequestingLU = settings.getBoolean("RequestingLU", false);
getBoolean()
函数返回第二个参数或传递的默认值(在本例中为“true”),如果没有为该键定义值(即“RequestingLU”)