2015-09-24 5 views
0

Я работаю над приложением Android, которое получает данные от RFDuino и отображает его на Line Chart.Как сохранить полученные данные в массиве?

В моем MainactivitybroadcastReceiver отправляет данные в метод addData при получении.

private final BroadcastReceiver rfduinoReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     final String action = intent.getAction(); 
     if (RFduinoService.ACTION_CONNECTED.equals(action)) { 
      upgradeState(STATE_CONNECTED); 
     } else if (RFduinoService.ACTION_DISCONNECTED.equals(action)) { 
      downgradeState(STATE_DISCONNECTED); 
     } else if (RFduinoService.ACTION_DATA_AVAILABLE.equals(action)) { 
      addData(intent.getByteArrayExtra(RFduinoService.EXTRA_DATA)); 
     } 
    } 
}; 

Метод AddData выглядит следующим образом:

public void addData(byte[] data) { 

    View view = getLayoutInflater().inflate(android.R.layout.simple_list_item_2, dataLayout, false); 

    TextView text1 = (TextView) view.findViewById(android.R.id.text1); 

     String riz = HexAsciiHelper.bytesToHex(data); 
     t1 = Integer.parseInt(riz, 16); 
     String testString = String.valueOf(t1); 
     text1.setText(testString); 

     dataLayout.addView(view,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT); 
    } 

Теперь я хочу, чтобы сохранить значение t1 в массив. Проблема в том, что когда я пытаюсь это сделать, происходит NullPointerException, и программа останавливается.

Любая помощь будет оценена по достоинству.

+0

Где Вы объявляете 't1'? Также опубликовано целое stacktrace, * npe встречается * не говорит много – wasyl

+0

Я не вижу массив в вашем коде, кроме массива 'data'. Покажите нам код, который вы написали, чтобы попытаться сделать это, и трассировку стека из исключения, пожалуйста. –

ответ

2

Заявить ArrayList<Integer> и сохранить t1 значение после выполнения null проверка.

ArrayList <Integer> t1array = new ArrayList <Integer>(); 
String riz = HexAsciiHelper.bytesToHex(data); 

if (riz != null) { 
    Integer t1 = t1 = Integer.parseInt(riz, 16); 
    t1array.Add(t1); 
} 
+1

Это работает! Спасибо огромное! :) – user3863537

Смежные вопросы