切换findViewById返回null

时间:2016-07-25 15:39:26

标签: android bluetooth findviewbyid

我正在尝试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 ...你有什么想法???

3 个答案:

答案 0 :(得分:2)

您尝试做的事情将无效 - 您的findViewByID会查找您的活动xml中的视图,但视图(R.id.bluetooth_switch)位于片段的xml中。 查看代码实现的this SO答案。

答案 1 :(得分:0)

“findViewById”在提供的id(在您的示例中称为“bluetooth_switch”)在当前容器的“资源树”中不存在时返回null

答案 2 :(得分:0)

我解决了将这些代码行移动到我的片段java文件中的问题。感谢。