我正在制作一个程序,该程序将寻找与手机蓝牙设备配对,显示它们和他们的地址以供用户查看,并且当用户已经在手机中打开Bt时它正常工作。当他没有出现问题时,会导致数据添加到arrayList重复项中。我使用了一个while循环,所以它只在Bt模块打开后检查配对设备,这是在onResume()上做这样的事情的好方法吗?
答案 0 :(得分:1)
快速解决方法是检查数据源列表中是否已存在String
。像这样的东西
for (BluetoothDevice device: pairedDevice) {
String name = device.getName();
String address = device.getAddress();
String toBeAdded = address + " " + name;
if (!QueryDevices_final.contains(toBeAdded) {
QueryDevices_final.add(toBeAdded);
arrayAdapter.notifyDataSetChanged();
}
}
答案 1 :(得分:0)
你不能把你的checkBluetoothState()放在onCreate方法中吗?并根据结果调用数组创建的东西?
根据您的应用程序的开发方式,可以多次调用onResume。为避免这种情况,您可以:
创建共享首选项/标志并仅调用一次(firstRun = true并在运行一次时将其更新为false)然后使数组创建和更新依赖于该标志,
在该类中创建一个公共变量,并且只在第一次运行时才运行代码。最后更改变量。
更改活动的实施方式,以便onResume只运行一次。
您还可以查看此答案并尝试了解您的应用在哪里调用onResume两次: Why is my onResume being called twice?