2012-11-01 12 views
7

Nadal pracuję nad moimi umiejętnościami na Androidzie.Uzyskaj dane z innej aktywności

Moim problemem jest to, że mam etykietę z mojej bazy danych, która zawiera nazwę, która jest w pokrętle, kiedy kliknę na etykiecie, pojawi się okno dialogowe i da ci trzy możliwości: 1. aktualizacja. 2. usuń. 3. anuluj. Przeszedłem drugi i trzeci wybór, ale w aktualizacji stoję przed tym problemem; Przechodzę do innej działalności, która ma editText i 2 przyciski, zapisz i anuluj, chcę przycisk zapisu, aby uzyskać dane z editText w putExtra i wysłać go do tej samej poprzedniej działalności i zmienić starą etykietę z danymi z editText.

Doceniam każdą pomoc. Z góry dzięki.

+0

można przejść do preferencji lub umieścić dodatkową metodę, która jest podana poniżej. – itsrajesh4uguys

+0

użyj startActivityForResult, aby wywołać inne działanie i uzyskać wynik onActivityResult –

Odpowiedz

11

W swoim drugim aktywności, można uzyskać dane z pierwszej aktywności metodą getIntent() a następnie getStringExtra(), getIntExtra() ...

następnie powrócić do swojej pierwszej działalności ty należy użyć metody setResult() z danymi zamiaru, aby powrócić jako parametr.

Aby otrzymać powracające dane z drugiej aktywności podczas pierwszej aktywności, wystarczy przesłonić metodę onActivityResult() i użyć intencji do pobrania danych.

Pierwszy aktywny:

//In the method that is called when click on "update" 
Intent intent = ... //Create the intent to go in the second activity 
intent.putExtra("oldValue", "valueYouWantToChange"); 
startActivityForResult(intent, someIntValue); //I always put 0 for someIntValue 

//In your class 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    //Retrieve data in the intent 
    String editTextValue = intent.getStringExtra("valueId"); 
} 

Drugi aktywny:

//When activity is created 
String value = intent.getStringExtra("oldValue"); 
//Then change the editText value 

//After clicking on "save" 
Intent intent = new Intent(); 
intent.putExtra("valueId", value); //value should be your string from the edittext 
setResult(somePositiveInt, intent); //The data you want to send back 
finish(); //That's when you onActivityResult() in the first activity will be called 

Nie zapomnij, aby rozpocząć swoją drugą aktywność metodą startActivityForResult().

+1

Dziękuję bardzo za jego pracę. – Tayseer

4

Musisz przekazać informacje jako dodatki.

przekazania informacji

Intent i = new Intent(); 
i.setClassName("com.example", "com.example.activity"); 
i.putExtra("identifier", VALUE); 
startActivity(i); 

uzyskaniu informacji

Bundle extras = getIntent().getExtras(); 
String exampleString = extras.getString("identifier"); 
1

Kiedy chcesz rozpocząć drugą aktywność, użyj startActivityForResult(your intent, request code); W swoim pierwszym użyciem działalności

protected void onActivityResult(int requestCode, int resultCode, 
      Intent data) { 
     if (requestCode == your_reques_code) { 
      if (resultCode == RESULT_OK) { 
       // do your stuff   
      } 
     } 
} 

przed zakończeniem drugi a ctivity nie zapomnieć o tym,

Intent data = new Intent(); 
data.putExtra("text", edtText.getText()); 
setResult(RESULT_OK, data); 
+0

Byłoby miło, gdyby twój kod zawierał wszystko, co jest potrzebne do jego kompilacji, np. 'Int RESULT_OK = 1'. Niewielkie wyjaśnienie byłoby również lepsze niż brak wyjaśnienia (szczególnie, gdy starter wątku wskazuje, że wciąż pracuje nad swoimi umiejętnościami). – winklerrr

Powiązane problemy