我正在尝试2天来解决这个问题。我制作了一个片段,我在其中切换启用和禁用蓝牙。在我的主要活动中,我写道:
bluetoothSwitch = (Switch) findViewById(R.id.bluetooth_switch);
bluetoothSwitch.setOnClickListener(clicked);
点击的地方:
clicked = new ButtonClicked();
和
class ButtonClicked implements AdapterView.OnClickListener
{
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.bluetooth_switch:
if (bluetoothAdapter.isEnabled()){
bluetoothAdapter.disable();
Log.d("Log", "Bluetooth is disabled");
}
else{
bluetoothAdapter.enable();
Log.d("Log", "Bluetooth is enabled");
}
break;
case R.id.buttonSearch:
arrayListBluetoothDevices.clear();
startSearching();
break;
case R.id.discoverable_switch:
makeDiscoverable();
break;
default:
break;
}
}
}
当我运行它时,findViewById返回null ...你有什么想法???
答案 0 :(得分:2)
您尝试做的事情将无效 - 您的findViewByID
会查找您的活动xml中的视图,但视图(R.id.bluetooth_switch
)位于片段的xml中。
查看代码实现的this SO答案。
答案 1 :(得分:0)
“findViewById”在提供的id(在您的示例中称为“bluetooth_switch”)在当前容器的“资源树”中不存在时返回null
答案 2 :(得分:0)
我解决了将这些代码行移动到我的片段java文件中的问题。感谢。