Hey Leute,
Ich schreibe an einer App und komme da nicht so wirklich weiter.
Ich habe eine Klasse Namens SettingsFragmentForBLT die von
PreferenceFragmentCompat ableitet. In Ihr behandle ich User Eingaben von
onPreferenceChange. hier gibt es die Möglichkeit, Einstellungen für das
Bluetooths Gerät vorzunehmen mit dem das Smartphone beim Aufrufen der
Klasse schon gekoppelt ist. Die BLT Angelegenheiten Regel ich in der
Klasse Namens DeviceControlActivity.
Ich muss DAS behandelnde Objekt aus DeviceControlActivity in der Klasse
SettingsFragmentForBLT verfügbar machen, damit ich zum Zeitpunkt der
Eingabe vom User die Daten an das BLT gerät übermitteln kann. Soweit ich
weiß, muss ich dafür den Konstuktor der DeviceControlActivity überladen.
Mein Versuch bezieht sich auf diese Webseite:
https://sciodoo.de/konstruktor-im-java-programm-ein-objekt-uebergeben/#
Hier der Code aus der SettingsFragmentForBLT Klasse:
1 | public static class SettingsFragmentForBLT extends PreferenceFragmentCompat implements
|
2 | Preference.OnPreferenceChangeListener {
|
3 | @Override
|
4 | public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
5 | addPreferencesFromResource(R.xml.blt_preferences);
|
6 |
|
7 | // Mit einem Listener werden Einstellungsänderungen in PreferencFragmnt (BLT) überwacht
|
8 | Preference preferenceFeedbackIstAn = findPreference("FeedbackIstAn");
|
9 | preferenceFeedbackIstAn.setOnPreferenceChangeListener(this);
|
10 |
|
11 | Preference preferenceSwitchfeedback = findPreference("seek_bar_key");
|
12 | preferenceSwitchfeedback.setOnPreferenceChangeListener(this);
|
13 | }
|
14 |
|
15 | @Override
|
16 | public boolean onPreferenceChange(Preference preference, Object newValue) {
|
17 | String preferenceKey = preference.getKey();
|
18 |
|
19 | DeviceControlActivity deviceControlActivity = new DeviceControlActivity();
|
20 | DeviceControlActivity msBluetoothLeService = new deviceControlActivity.getmBluetoothLeService(deviceControlActivity);
|
21 |
|
22 | // BluetoothLeService mBluetoothLeService
|
23 |
|
24 |
|
25 | Boolean switchOn = (boolean) newValue;
|
26 |
|
27 | if (preferenceKey.equals("FeedbackIstAn")) {
|
28 | deviceControlActivity.toggleLEDGren();
|
29 | Log.w(TAG, "preferenceValue: " + newValue);
|
30 |
|
31 | if (switchOn) {
|
32 | if (msBluetoothLeService != null) {
|
33 | msBluetoothLeService.writeCustomCharacteristic(53);
|
34 | Log.w(TAG, "Grün wurde eingeschaltet");
|
35 | }
|
36 | ...
|
Hier der Code aus DeviceControlActivity:
1 | public class DeviceControlActivity extends AppCompatActivity{
|
2 |
|
3 | ...
|
4 | public DeviceControlActivity(BluetoothLeService mBluetoothLeService) {
|
5 | this.mBluetoothLeService = mBluetoothLeService;//Zuweisung mit this
|
6 | }
|
7 | public void getmBluetoothLeService(DeviceControlActivity erstelltesObjekt){
|
8 | this.mBluetoothLeService = erstelltesObjekt.mBluetoothLeService;
|
9 | }
|
10 | ...
|
Ich danke für eure Unterstützung und wünsche eine angenehme Zeit