1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Wie kann Listener andere Activity informieren?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AquaBall, 31.03.2012.

  1. AquaBall, 31.03.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    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?
     
  2. sixi, 02.04.2012 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    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.
     

Diese Seite empfehlen