error: unreachable statement myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

error: unreachable statement myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

我正在使用导航抽屉 activity 模板创建一个用于蓝牙设备的应用程序,在片段中初始化蓝牙适配器时出现问题,我在下面附上我的代码。编译代码时,报错

error: unreachable statement myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    package com.example.myt.ui.home;
     
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.bluetooth.BluetoothSocket;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
     
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.fragment.app.Fragment;
    import androidx.lifecycle.Observer;
    import androidx.lifecycle.ViewModelProviders;
    import androidx.navigation.ui.AppBarConfiguration;
     
    import com.example.myt.R;
     
    import java.io.IOException;
    import java.util.Set;
    import java.util.UUID;
     
    public class HomeFragment extends Fragment {
     
        private HomeViewModel homeViewModel;
        private static final int REQUEST_ENABLE_BT = 1;
        private Button onBtn;
        private Button offBtn;
        private Button listBtn;
        private Button findBtn;
        private TextView text;
        private BluetoothAdapter myBluetoothAdapter;
        private BluetoothSocket socket;
        private Set<BluetoothDevice> pairedDevices;
        private ListView myListView;
        private ArrayAdapter<String> BTArrayAdapter;
        private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
        private AppBarConfiguration mAppBarConfiguration;
        public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            homeViewModel =
                    ViewModelProviders.of(this).get(HomeViewModel.class);
            View root = inflater.inflate(R.layout.fragment_home, container, false);
            return root;
            // take an instance of BluetoothAdapter - Bluetooth radio
            myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            if(myBluetoothAdapter == null) {
                onBtn.setEnabled(false);
                offBtn.setEnabled(false);
                listBtn.setEnabled(false);
                findBtn.setEnabled(false);
                text.setText("Status: not supported");
     
                Toast.makeText(getActivity().getBaseContext(),"Your device does not support Bluetooth",
                        Toast.LENGTH_LONG).show();
            } else {
                text = (TextView) root.findViewById(R.id.text);
                onBtn = (Button) root.findViewById(R.id.turnOn);
                onBtn.setOnClickListener(new View.OnClickListener() {
     
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        on(v);
                    }
                });
     
                offBtn = (Button) root.findViewById(R.id.turnOff);
                offBtn.setOnClickListener(new View.OnClickListener() {
     
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        off(v);
                    }
                });
     
                listBtn = (Button) root.findViewById(R.id.paired);
                listBtn.setOnClickListener(new View.OnClickListener() {
     
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        list(v);
                    }
                });
     
                findBtn = (Button) root.findViewById(R.id.search);
                findBtn.setOnClickListener(new View.OnClickListener() {
     
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        find(v);
                    }
                });
     
                myListView = (ListView) root.findViewById(R.id.listView1);
     
                // create the arrayAdapter that contains the BTDevices, and set it to the ListView
                BTArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1);
                myListView.setAdapter(BTArrayAdapter);
            }
            myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                        long arg3) {
                    // TODO Auto-generated method stub
     
                    myBluetoothAdapter.cancelDiscovery();
                    final String info = ((TextView) arg1).getText().toString();
     
                    //get the device address when click the device item
                    String address = info.substring(info.length()-17);
     
                    //connect the device when item is click
                    BluetoothDevice connect_device = myBluetoothAdapter.getRemoteDevice(address);
     
                    try {
                        socket = connect_device.createRfcommSocketToServiceRecord(MY_UUID);
                        socket.connect();
                    } catch (IOException e) {
                        try {
                            socket.close();
                        } catch (IOException e2) {
                            errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
                        }
                    }
     
                }
            });//************new_devices_list end
        }
        private void errorExit(String title, String message){
            Toast.makeText(getActivity().getBaseContext(), title + " - " + message, Toast.LENGTH_LONG).show();
            getActivity().finish();
        }
        public void on(View view){
            if (!myBluetoothAdapter.isEnabled()) {
                Intent turnOnIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT);
     
                Toast.makeText(getActivity().getBaseContext(),"Bluetooth turned on" ,
                        Toast.LENGTH_LONG).show();
            }
            else{
                Toast.makeText(getActivity().getBaseContext(),"Bluetooth is already on",
                        Toast.LENGTH_LONG).show();
            }
        }
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == REQUEST_ENABLE_BT) {
                if (myBluetoothAdapter.isEnabled()) {
                    text.setText("Status: Enabled");
                } else {
                    text.setText("Status: Disabled");
                }
            }
        }
     
        public void list(View view){
            // get paired devices
            pairedDevices = myBluetoothAdapter.getBondedDevices();
     
            // put it's one to the adapter
            for(BluetoothDevice device : pairedDevices)
                BTArrayAdapter.add(device.getName()+ "\n" + device.getAddress());
     
            Toast.makeText(getActivity().getBaseContext(),"Show Paired Devices",
                    Toast.LENGTH_SHORT).show();
     
        }
     
        final BroadcastReceiver bReceiver = new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                // When discovery finds a device
                if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                    // Get the BluetoothDevice object from the Intent
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    // add the name and the MAC address of the object to the arrayAdapter
                    BTArrayAdapter.add(device.getName() + "\n" + device.getAddress());
                    BTArrayAdapter.notifyDataSetChanged();
                }
            }
        };
     
        public void find(View view) {
            if (myBluetoothAdapter.isDiscovering()) {
                // the button is pressed when it discovers, so cancel the discovery
                myBluetoothAdapter.cancelDiscovery();
            }
            else {
                BTArrayAdapter.clear();
                myBluetoothAdapter.startDiscovery();
     
                getActivity().registerReceiver(bReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
            }
        }
     
        public void off(View view){
            myBluetoothAdapter.disable();
            text.setText("Status: Disconnected");
     
            Toast.makeText(getActivity().getBaseContext(),"Bluetooth turned off",
                    Toast.LENGTH_LONG).show();
        }
     
    }

您将在 onCreateView 上立即返回视图,这就是永远无法访问其余代码的原因。问题在这里:

View root = inflater.inflate(R.layout.fragment_home, container, false);
return root;

return root; 放在:

之后

new_devices list end