Przekazywanie pakietu podczas startActivity ()?

174

Jaki jest prawidłowy sposób przekazania pakietu do działania, które jest uruchamiane z bieżącego? Wspólne właściwości?

yanchenko
źródło

Odpowiedzi:

426

Masz kilka możliwości:

1) Użyj paczki z intencji :

Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value);  

2) Utwórz nowy pakiet

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);

3) Użyj skrótu metody putExtra () metody Intent

Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);


Następnie w uruchomionym działaniu można je przeczytać za pośrednictwem:

String value = getIntent().getExtras().getString(key)

UWAGA: Pakiety mają metody „get” i „put” dla wszystkich typów pierwotnych, Parcelables i Serializables. Właśnie użyłem Strings w celach demonstracyjnych.

Jeremy Logan
źródło
20

Możesz użyć Paczki z Intencji:

Bundle extras = myIntent.getExtras();
extras.put*(info);

Lub cały pakiet:

myIntent.putExtras(myBundle);

Czy tego szukasz?

DustinB
źródło
1
Z wynikowej intencji wywołujesz getIntent (). GetExtras (). Get * (), aby uzyskać to, co było wcześniej zapisane.
yanchenko
16

Przekazywanie danych z jednego działania do działania w systemie Android

Zamiar zawiera czynność i opcjonalnie dodatkowe dane. Dane można przekazać do innego działania metodą intencyjną putExtra(). Dane są przekazywane jako dodatki i są key/value pairs. Klucz jest zawsze ciągiem. Jako wartość możesz użyć pierwotnych typów danych int, float, chars itp. Możemy również przekazywać Parceable and Serializableobiekty z jednej aktywności do drugiej.

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);

Pobieranie danych pakietu z aktywności Androida

Informacje można pobrać przy użyciu getData()metod w obiekcie Intent. Obiekt Intent można pobrać za pomocą getIntent()metody.

 Intent intent = getIntent();
  if (null != intent) { //Null Checking
    String StrData= intent.getStringExtra(KEY);
    int NoOfData = intent.getIntExtra(KEY, defaultValue);
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
    char charData = intent.getCharExtra(KEY, defaultValue); 
  }
IntelliJ Amiya
źródło
6

Za pomocą pakietu można przekazywać wartości z jednego działania do innego działania. W ramach swojej bieżącej aktywności utwórz pakiet i ustaw pakiet dla określonej wartości i przekaż ten pakiet do celu.

Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);

Teraz w swoim NewActivity możesz zdobyć ten pakiet i odzyskać swoją wartość.

Bundle bundle = getArguments();
String value = bundle.getString(key);

Możesz także przekazać dane przez intencję. W swojej obecnej działalności ustaw taki zamiar,

Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);

Teraz w swoim NewActivity możesz uzyskać tę wartość z takiego zamiaru,

String value = getIntent().getExtras().getString(key);
Neha Mehta
źródło
Po co używać pakietu, skoro obiekt intencji ma metody getExtra i putExtra?
Psychosis
0

Napisz to jest aktywność, w której się znajdujesz:

Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);

W NextActivity.java

Intent getIntent = getIntent();
//call a TextView object to set the string to
TextView text = (TextView)findViewById(R.id.textview_id);
text.setText(getIntent.getStringExtra("string_name"));

To działa dla mnie, możesz spróbować.

Źródło: https://www.c-sharpcorner.com/article/how-to-send-the-data-one-activity-to-another-activity-in-android-application/

trustidkid
źródło
0

możesz użyć tego kodu w swojej pierwszej aktywności :

 Intent i = new Intent(Context, your second activity.class);
        i.putExtra("key_value", "your object");
        startActivity(i);

i zdobądź obiekt w drugiej czynności :

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }
Pouria Hemati
źródło