Skip to content

Commit

Permalink
fix: handle configuration changes in SensorActivity
Browse files Browse the repository at this point in the history
Fixes #2596
  • Loading branch information
savsch authored and marcnause committed Jan 28, 2025
1 parent 98445e1 commit 6e94f1b
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions app/src/main/java/io/pslab/activity/SensorActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import android.widget.ListView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
Expand Down Expand Up @@ -45,6 +46,11 @@
*/

public class SensorActivity extends GuideActivity {
private static final String TAG = SensorActivity.class.getSimpleName();

private static final String KEY_ENTRIES_ADDRESSES = TAG + "_entries_addrs";
private static final String KEY_ENTRIES_NAMES = TAG + "_entries_names";
private static final String KEY_VALUE_SCAN = TAG + "_value_tvscan";

private I2C i2c;
private ScienceLab scienceLab;
Expand Down Expand Up @@ -94,6 +100,15 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
lvSensor = findViewById(R.id.lv_sensor);
lvSensor.setAdapter(adapter);

if (savedInstanceState != null) {
String savedScanResults = savedInstanceState.getString(KEY_VALUE_SCAN);
List<String> savedNames = savedInstanceState.getStringArrayList(KEY_ENTRIES_NAMES);
List<String> savedAddresses = savedInstanceState.getStringArrayList(KEY_ENTRIES_ADDRESSES);
if (savedScanResults != null) tvSensorScan.setText(savedScanResults);
if (savedNames != null) dataName.addAll(savedNames);
if (savedAddresses != null) dataAddress.addAll(savedAddresses);
}

buttonSensorAutoScan.setOnClickListener(v -> {
buttonSensorAutoScan.setClickable(false);
tvSensorScan.setText(getResources().getString(R.string.scanning));
Expand Down Expand Up @@ -155,6 +170,14 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
});
}

@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_VALUE_SCAN, tvSensorScan.getText().toString());
outState.putStringArrayList(KEY_ENTRIES_NAMES, new ArrayList<>(dataName));
outState.putStringArrayList(KEY_ENTRIES_ADDRESSES, new ArrayList<>(dataAddress));
}

private class PopulateSensors extends AsyncTask<Void, Void, Void> {
private List<Integer> detectedSensors;

Expand Down

0 comments on commit 6e94f1b

Please sign in to comment.