2012-10-05 12 views
5

Mam aktywność na którym można poruszać się A->B->C->DPowrót nacisnąć przycisk trzeba pokazać zaktualizowaną wartość aktywności

W Activity D mam przycisku, w którym jeśli user'll Naciśnij ten przycisk, to będzie iść do Activity A . Tutaj utworzę nową instancję, w której użytkownik może zaktualizować wartość tutaj.

Kończę działanie, przejdzie Activity D, od Activity D użytkownik wciśnie Back Button
D->C->B->A
i przejdzie do Activity A.

Muszę pokazać zaktualizowaną wartość w Activity A, jak mogę zaktualizować wartość w "Aktywności A"?

+1

@RobinHood to byłoby okropne (onResume)! –

Odpowiedz

4

Będziesz chcą mieć całą masę startActivityForResult() s, a w zasadzie łańcucha je z powrotem do A. D

Zobacz tutaj: How can I pass values between Activities on Android?

Alternatywnie, można przechowywać wartość jako SharedPreferences i po prostu sprawdź później, gdy powrócisz do pierwotnej aktywności.

0

Dodaj ten fragment do swojej aktywności D.

@Override 
public void onBackPressed(){ 
    aMethodToUpdateYourActivityA(); 
    } 
2

Użyj Shared Preferences, aby zapisać swoje dane. W ten sposób otrzymasz dane we wszystkich swoich działaniach.

0

Możesz dowiedzieć się więcej o cyklu działalności i zarządzania danymi tutaj Activity

Co do Twojego pytania należy robić żadnych aktualizacji danych z onResume metody wewnątrz Aktywny A.

@Override 
public void onResume(){ 
    //Update your data here 
} 

Jeśli problemem jest to, jak przekazywać dane między nimi, powinieneś prawdopodobnie używać Shared preferences, ponieważ ładowanie funkcji startActivityForResult przy tylu czynnościach nie jest zalecane. Czy jest to naprawdę konieczne, aby mieć tę gerarchię? Byłoby łatwiej, gdyby zaraz po aktualizacji danych użytkownik po prostu zacząłAktywnośćA i przekazywał dane bezpośrednio.

0

Można to zrobić na 2 sposoby:

  1. Użyj wspólne preferencje i przechowywać zaktualizowaną wartość, a następnie onResume() aktywności A, czytać go z tych samych wspólnych preferencji i zaktualizować wartość.

  2. uruchamiać działania za pomocą startActivityForResult i zbierać wartości za pomocą obiektu intent i przekazać go do poprzednich działań za pomocą setResult.

+0

Dzięki za pomoc – mohan

4

myślę, że trzeba użyć SharedPreference do przechowywania danych na plecach kliknięcia przycisku lub użyj zmienną statyczną.

// ------------------ Aby zapisać dane ------------------

SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putInt("key", countValue); 
       editor.commit(); 

// --------------------- Aby uzyskać dane ------------------

if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
    Intent home=new Intent(PersentActivity.this,DesiredActivity.class); 

       sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE); 
      int countValue = sharedPreferences.getInt("key", 0); 

       startActivity(home); 

       return true; 
      } 
1

Jeśli nie przechowujesz danych podczas aktualizacji Activity A, lepiej je przechowywać w zmiennych statycznych o wartości Activity A i załadować dane do Twojego onResume().

Jeśli masz bazę danych, to przechowuj dane w Activity A z bazy danych w swoim onResume().

Powiązane problemy