Wie kann ich Daten von einer Aktivität (Absicht) zu einer anderen senden?
Ich verwende diesen Code, um Daten zu senden:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
Ermitteln Sie zunächst die Absicht, mit der Ihre Aktivität mit der getIntent()
-Methode begonnen hat:
Intent intent = getIntent();
Wenn Ihre zusätzlichen Daten als Zeichenfolgen dargestellt werden, können Sie die intent.getStringExtra(String name)
-Methode verwenden. In Ihrem Fall:
String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
In der empfangenden Tätigkeit
Bundle extras = getIntent().getExtras();
String userName;
if (extras != null) {
userName = extras.getString("name");
// and get whatever type user account id is
}
// How to send value using intent from one class to another class
// class A(which will send data)
Intent theIntent = new Intent(this, B.class);
theIntent.putExtra("name", john);
startActivity(theIntent);
// How to get these values in another class
// Class B
Intent i= getIntent();
i.getStringExtra("name");
// if you log here i than you will get the value of i i.e. john
String value = "Hello World!";
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("sample_name", value);
startActivity(intent);
String value;
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
value = bundle.getString("sample_name");
}
Anstatt eine weitere neue Absicht zu initialisieren, um die Daten zu empfangen, führen Sie einfach Folgendes aus:
String id = getIntent().getStringExtra("id");
Wenn dies in einer FragmentActivity verwendet wird, versuchen Sie Folgendes:
Die erste Seite erweitert FragmentActivity
Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);
In dem Fragment müssen Sie lediglich getActivity()
aufrufen,
Die zweite Seite erstreckt sich über Fragment :
String receive = getActivity().getIntent().getExtras().getString("name");
Wenn Sie versuchen, zusätzliche Daten in Fragmenten abzurufen, können Sie Folgendes verwenden:
Daten platzieren mit:
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);
Daten abrufen mit:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getArguments().getInt(ARG_SECTION_NUMBER);
getArguments().getString(ARG_SECTION_STRING);
getArguments().getBoolean(ARG_SECTION_BOOL);
getArguments().getChar(ARG_SECTION_CHAR);
getArguments().getByte(ARG_SECTION_DATA);
}
Sie können jede Art von zusätzlichen Daten von Intent erhalten , egal ob es sich um ein Objekt oder einen Stachel oder um irgendeine Art von Daten handelt.
Bundle extra = getIntent().getExtras();
if (extra != null){
String str1 = (String) extra.get("obj"); // get a object
String str2 = extra.getString("string"); //get a string
}
und Kürzeste Lösung :
Boolean isGranted = getIntent().getBooleanExtra("tag", false);
Erste Aktivität
val intent = Intent(this, SecondActivity::class.Java)
intent.putExtra("key", "value")
startActivity(intent)
Zweite Aktivität
val value = getIntent().getStringExtra("key")
Vorschlag
Legen Sie die Schlüssel immer in einer konstanten Datei ab, um die Verwaltung zu erleichtern.
companion object {
val PUT_EXTRA_USER = "PUT_EXTRA_USER"
}
** Daten absichtlich einfügen - **
Intent intent = new Intent(mContext, HomeWorkReportActivity.class);
intent.putExtra("subjectName","Maths");
intent.putExtra("instituteId",22);
mContext.startActivity(intent);
** Daten abrufen nach Absicht - **
String subName = getIntent().getStringExtra("subjectName");
int insId getIntent().getIntExtra("instituteId",0);
wenn wir Integer value by Intent senden. wenn wir den 2. Parameter 0 in getIntent (). getIntExtra ("instituteId", 0) verwenden müssen andernfalls verwenden wir keine 0, dann gibt Android mir eine Fehlermeldung.
Übergeben Sie die Absicht mit Wert bei der ersten Aktivität:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
Erhalte Absicht bei der zweiten Aktivität; -
Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");
Wir verwenden in der Regel zwei Methoden, um den Wert zu senden und den Wert zu erhalten. __ Für das Senden des Werts verwenden wir intent.putExtra("key", Value);
, und während der Empfangsabsicht auf eine andere Aktivität verwenden wir intent.getStringExtra("key");
, um die Absichtsdaten als String
zu erhalten oder eine andere zu verwenden verfügbare Methode zum Abrufen anderer Datentypen (Integer
, Boolean
usw.) .. Der Schlüssel kann ein beliebiges Schlüsselwort sein, um den Wert zu identifizieren. Dies bedeutet, dass der Wert, den Sie gemeinsam verwenden, .. _. Hoffe, dass es für Sie funktioniert.
Nur ein Vorschlag:
Anstelle von "id" oder "name" in Ihrem i.putExtra ("id" .....) würde ich, wenn es sinnvoll ist, die aktuellen Standardfelder verwenden, die mit putExtra () verwendet werden können, d Intent.EXTRA_something.
Eine vollständige Liste finden Sie unter Intent (Android Developers).
Wir können es mit einfachen Mitteln tun:
In FirstActivity:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
In SecondActivity:
try {
Intent intent = getIntent();
String uid = intent.getStringExtra("uid");
String pwd = intent.getStringExtra("pwd");
} catch (Exception e) {
e.printStackTrace();
Log.e("getStringExtra_EX", e + "");
}
Dies ist für Adapter, für Aktivitäten müssen Sie lediglich mContext .__ ändern. zu Ihrem Activty-Namen und für Fragment müssen Sie mContext in .__ ändern. getActivity ()
public static ArrayList<String> tags_array ;// static array list if you want to pass array data
public void sendDataBundle(){
tags_array = new ArrayList();
tags_array.add("hashtag");//few array data
tags_array.add("selling");
tags_array.add("cityname");
tags_array.add("more");
tags_array.add("mobile");
tags_array.add("Android");
tags_array.add("dress");
Intent su = new Intent(mContext, ViewItemActivity.class);
Bundle bun1 = new Bundle();
bun1.putString("product_title","My Product Titile");
bun1.putString("product_description", "My Product Discription");
bun1.putString("category", "Product Category");
bun1.putStringArrayList("hashtag", tags_array);//to pass array list
su.putExtras(bun1);
mContext.startActivity(su);
}
Um auf Daten von Intent zuzugreifen, sollten Sie zwei Dinge kennen.
In der Intent-Klasse gibt es verschiedene Methoden, um verschiedene Arten von Datentypen zu extrahieren ... Es sieht so aus
getIntent (). XXXX (KEY) oder intent.XXX (KEY);
Wenn Sie also den Datentyp Ihrer Variablen kennen, den Sie in otherActivity eingestellt haben, können Sie die entsprechende Methode verwenden.
String profileName = getIntent().getStringExtra("SomeKey");
Die Liste der verfügbaren Methoden finden Sie in der offiziellen Dokumentation von Intent .
Das kannst du auch so machen
// Wert in Absicht setzen
Intent in = new Intent(MainActivity.this, Booked.class);
in.putExtra("filter", "Booked");
startActivity(in);
// Wert aus Absicht erhalten
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String filter = bundle.getString("filter");