Как получить адаптеры ArrayAdapter в ArrayList? - PullRequest
2 голосов
/ 02 декабря 2011

Я пытаюсь создать приложение, которое будет обнаруживать находящиеся поблизости устройства Bluetooth и выбрасывать все mac-адреса в список. По причинам, которые я не понимаю, приложение завершает работу, если я пытаюсь использовать список для хранения строк из device.getAddress ().

После неудачной попытки поместить эти адреса в список, я сдался и использовал ArrayAdapter, увидев, что он использовался в некотором примере кода. Я подумал, что, возможно, я смогу поместить результаты в ArrayAdapter, затем извлечь из него адреса и в myList. Все еще не будет работать. Насколько я могу судить, я не могу использовать списки без сбоя моего приложения ...

Приложение не аварийно завершает работу, когда я комментирую что-либо, имеющее отношение к myList.

/* these are declared as class members */
//private ArrayAdapter<String> myArrayAdapter;
//private List<String> myList;
/*-------------------------------*/

private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        int position = 0;

        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            myArrayAdapter.add(device.getAddress());
            //myList.add(device.getAddress()); 
            //position++;  //SO USING THIS INTEGER...

        } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {             
            btnLocate.setText("Refresh Location");
            btnLocate.setClickable(true);
            //position--;
            //while(position>=0){
              //myList.add(myArrayAdapater.getItem(position).toString()); 
              //position--;
            //}
        }
    }
};

LogCat:

12-02 12:01:54.472: E/AndroidRuntime(16043): FATAL EXCEPTION: main
12-02 12:01:54.472: E/AndroidRuntime(16043): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetooth.device.action.FOUND (has extras) } in com.ronnyszutu.lpf.LPFMainActivity$1@40519840
12-02 12:01:54.472: E/AndroidRuntime(16043): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722)
12-02 12:01:54.472: E/AndroidRuntime(16043): at android.os.Handler.handleCallback(Handler.java:587)

1 Ответ

0 голосов
/ 17 января 2012

Вы инициализировали свой список, прежде чем пытаться добавить в него правильный адрес устройства? Кроме того, вы можете прочитать о жизненном цикле Receiver, поскольку в документах для разработчиков обсуждается срок действия объекта. BroadcastReceiver # ReceiverLifecycle

...