Wie kann Listener andere Activity informieren?

  • 1 Antworten
  • Letztes Antwortdatum
A

AquaBall

Fortgeschrittenes Mitglied
2
In meinem Programm gibt es ein OptionenMenü (mit dem technische Einheiten festgelegt werden):
Code:
public class M_Einstellungen extends PreferenceActivity 
                             implements OnSharedPreferenceChangeListener {
@Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.m_einstellungen);
    }
// ...
    public void onSharedPreferenceChanged(SharedPreferences sPref, String key) {
        ListPreference lp = (ListPreference)getPreferenceScreen() 
                            .findPreference(key);
        lp.setSummary("... wird berechnet in: " +  sPref.getString(key, ""));
    }
}
Zusätzlich gibt es ein Activity das Berechnungen durchführt, (abhängig von den obigen Einheiten).
Code:
public class Rechnungen extends Activity {
// ...
@Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rechnungen);
        
        // TemperaturEinheit einstellen: 
        SharedPreferences sharedPreferences = PreferenceManager
              .getDefaultSharedPreferences(getBaseContext());  
        ((TextView) findViewById(R.id.ehTemp)).setText(sharedPreferences
              .getString(getBaseContext().getString(R.string.keyTemp),"??"));  
         // Berechnungen + Ausgabe ... über diverse TextWatcher ...
    }
@Override public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.optionen, menu);
        return true;
    }
@Override public boolean onOptionsItemSelected(MenuItem item){
        Intent intent;
        switch (item.getItemId()) {
        case R.id.m_einstellungen:
            intent = new Intent( this, M_Einstellungen.class );
            startActivity(intent);            
            break;
        }
   }
// div TextWatcher ...
}
Mir gelingen zwar Listener in der selben Activity problemlos, aber:
Wie erkennt meine Rechnungs-Activity, wenn im Optionen Menü M_Einstellungen etwas geändert wird?
Wie kann ein Listener im Optionen Menü eine andere Activity/Layout/Programm informieren?
 
Wenn du es über den OnSharedPreferenceChangeListener machen willst, dann lass deine Activity diesen implementieren und setz ihn auf die Activity...

... oder du lädst die Werte aus den Preferences einfach neu, wenn der User wieder zu deiner Activity zurückkehrt.
 
Zurück
Oben Unten