2013-03-17 8 views
7

tutaj jest mój kod do wysyłania danych przez intencji, ale nie chcę otworzyć inną aktywność Chcę tylko do wysyłania danych bez otwierania go ..Jak przesłać dane przez zamiar w Androidzie bez otwierania innej aktywności?

Bundle contain = new Bundle(); 
      contain.putString("key4", item); 
      contain.putString("price", price); 

Intent a = new Intent(Searchbydate.this, Searchbyitem.class); 
      a.putExtras(contain); 
      startActivity(a); 

tutaj nie chcę, aby otworzyć ten Searchbyitem. klasa po prostu wyślij dane ...

+0

A następnie za to, co chcesz wysłać dane? nie ma dla mnie sensu. – Sajmon

+1

@sajmon Wysyłam te dane, aby pokazać je w innym działaniu, ale nie chcę tego otwierać przez to działanie, teraz czy ma to sens dla Ciebie? – scripter

+2

Teraz tak przepraszam> :) Teraz możesz zapisywać wartości w SharedPreferences, a następnie pobierać je kiedy tylko chcesz. – Sajmon

Odpowiedz

3

Nazywasz również użyć SharedPreferences do Archiwum że

1

Można spróbować EventBus lub Otto biblioteki Androida do komunikowania się między działaniami, usługami i fragmentów ..

Należy więc stworzyć Usługa przekazywania danych i komunikacji między czynnościami, fragmentami itp. korzysta z autobusu zdarzeń

3

Y es również stanąłem w obliczu tego problemu.

Wielu programistów również boryka się z problemami podczas przekazywania danych z okna dialogowego do innej aktywności poprzez zamiar lub pakiet. Zwraca wartość null w czasie pobierania z innej czynności.

Jedynym rozwiązaniem jest SharedPreferences.

Ale trzeba umieścić go wewnątrz przycisku zwolnieniu. (Ex: OK/Cancel etc)

i pobierać dane z innej działalności łatwo za pośrednictwem tego samego klucza. Nie używaj żadnych usług, po których następuje zamiana transmisji.

Kod aktywności dialogowym jest tak:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setIcon(R.drawable.mailicon); 
    builder.setTitle(name); 
    builder.setView(view); 

    builder.setPositiveButton("Send Request",new DialogInterface.OnClickListener() 
    { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
    String mailID = id.getText().toString(); 

    //Here define all your sharedpreferences code with key and value 
    SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE); 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putString("MID", mailID); 
    edit.commit(); 

    } 

}); 

A z innej pobierać dane tak:

SharedPreferences bb = getSharedPreferences("my_prefs", 0); 
    String m = bb.getString("NUM", ""); 
    Toast.makeText(this, m, Toast.LENGTH_SHORT).show(); 

Dodaj kilka checkings na dobrym poziomie.

Dziękuję

Powiązane problemy