2016-10-13 2 views
0

Ich habe drei switchpreferences in meiner App (sagen wir, switch1, switch2 und switch3). Was ich erreichen möchte ist, wann immer switch1 AND switch2 auf false gesetzt wird, switch3 muss auch automatisch auf false gesetzt werden. Wenn entweder switch1 oder switch2 auf true eingestellt ist, sollte switch3 auch true lauten. Wie kann ich das erreichen?SwitchPreference Abhängigkeit von zwei anderen Switch-Einstellungen

+0

wenn der Präferenzwert für Schalter 1 und 2 geändert wird? ist es von irgendeiner Benutzerintraktion? – Radhey

+0

ja. mit einem Klick auf den Button und auch aus den Einstellungen. aber beide müssen sich nicht unbedingt zusammen ändern. –

+0

Verwendung lokaler Rundfunkempfänger in diesem Fall überhaupt .when wird die Benutzerinteraktion durchführen, dass Feuer Broadcst Empfänger und innen OnReceive() Methode Einstellschalter 3 Präferenzwert mit if-else Zustand entsprechend Grundlage switch1 und 2. – Radhey

Antwort

0

folgt vor, um die Schritte

1) erste lokale Rundfunkempfänger

@Override 
public void onCreate(Bundle savedInstanceState) { 

    ... 

    // Register to receive messages. 
    // We are registering an observer (mMessageReceiver) to receive Intents 
    // with actions named "custom-event". 
    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, 
     new IntentFilter("custom-event")); 
} 

// Inside handler for received Intents. This will be called whenever an Intent 
// with an action named "custom-event" is broadcasted. 
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    // Get extra data included in the Intent 
    String message = intent.getStringExtra("message"); 
    Log.e("receiver", "Got message: " + message); 
    //perform logic here to store data etc.. 
    } 
}; 

@Override 
protected void onDestroy() { 
    // Unregister since the activity is about to be closed. 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); 
    super.onDestroy(); 
} 

2) erstellen schreiben jeder Benutzer Methode wie folgt definieren: Lassen Sie sagen, ich innen Taste aufrufen möchten Klicken Sie auf Ereignis,

private void sendMessage() { 
    Log.e("sender", "Broadcasting message"); 
    Intent intent = new Intent("custom-event"); 
    // You can also include extra data. 
    intent.putExtra("message", "Its me !!"); 
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
//Thats it.... 
} 
0

Implementieren Sie onCheckChangedListener für switch1 und switch2, und fügen Sie die folgende Anweisung in Ihrer onCheckChanged() - Callback-Methode hinzu.

switch3.setChecked(switch1.isChecked() || switch2.isChecked()) 
Verwandte Themen