Wie kann ich ein Objekt eines benutzerdefinierten Typs von einem Tätigkeit zu einem anderen unter Verwendung der
putExtra()
Methode der Klasse Absicht ?
Ist sie noch experimentell?
Erste Umsetzung Paketversandfähig in Ihrer Klasse. Dann übergeben Sie das Objekt wie folgt.
SendActivity.java
ObjectA obj = new ObjectA();
// Set values etc.
Intent i = new Intent(this, MyActivity.class);
i.putExtra("com.package.ObjectA", obj);
startActivity(i);
ReceiveActivity.java
Bundle b = getIntent().getExtras();
ObjectA obj = b.getParcelable("com.package.ObjectA");
Die Paketzeichenkette ist nicht erforderlich, die Zeichenkette muss nur in beiden Aktivitäten identisch sein.
Starten Sie eine andere Aktivität aus dieser Aktivität heraus, indem Sie Parameter über das Bundle-Objekt übergeben.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Abrufen bei einer anderen Aktivität (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Dies ist für einfache Datentypen in Ordnung. Aber wenn Sie komplexe Daten zwischen den Aktivitäten weitergeben möchten, müssen Sie sie zuerst serialisieren.
Hier haben wir das Mitarbeitermodell
class Employee{
private String empId;
private int age;
print Double salary;
getters...
setters...
}
Sie können die von Google bereitgestellte Gson Lib verwenden, um die komplexen Daten zu serialisieren wie diese
String strEmp = new Gson().toJson(emp);
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("EMP", strEmp);
startActivity(intent);
Bundle bundle = getIntent().getExtras();
String empStr = bundle.getString("EMP");
Gson gson = new Gson();
Type type = new TypeToken<Employee>() {
}.getType();
Employee selectedEmp = gson.fromJson(empStr, type);
In Koltin
Fügen Sie die Kotlin-Erweiterung in Ihre build.gradle ein.
apply plugin: 'kotlin-android-extensions'
android {
androidExtensions {
experimental = true
}
}
Erstellen Sie dann Ihre Datenklasse wie folgt.
@Parcelize
data class Sample(val id: Int, val name: String) : Parcelable
Objekt mit Intent übergeben
val sample = Sample(1,"naveen")
val intent = Intent(context, YourActivity::class.java)
intent.putExtra("id", sample)
startActivity(intent)
Objekt mit Absicht erhalten
val sample = intent.getParcelableExtra("id")
Wenn Sie die putExtra-Funktion nicht unbedingt benötigen und einfach nur eine andere Aktivität mit Objekten starten wollen, können Sie sich den GNLauncher ( https://github.com/noxiouswinter/gnlib_android/wiki#gnlauncher ), die ich in dem Versuch geschrieben habe, diesen Prozess zu vereinfachen.
GNLauncher macht das Senden von Objekten/Daten an eine Aktivität von einer anderen Aktivität usw. so einfach wie der Aufruf einer Funktion in der Aktivität mit den erforderlichen Daten als Parameter. Es führt Typsicherheit ein und beseitigt alle Probleme der Serialisierung, des Anhängens an den Intent mit String-Schlüsseln und des Rückgängigmachens desselben am anderen Ende.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
@UMMA - Sie brauchen Ihre Fragen nicht ständig als "Community Wiki" zu markieren. Schauen Sie hier nach: meta.stackexchange.com/questions/11740/
1 Stimmen
@Paresh: Der von Ihnen angegebene Link ist defekt. Könnten Sie bitte eine Alternative angeben?
0 Stimmen
Mögliche Duplikate von Wie man in Android ein Objekt von einer Aktivität an eine andere weitergibt
0 Stimmen
Sehen Sie sich diese Antwort an. stackoverflow.com/questions/8857546/
0 Stimmen
Ich habe eine einfache und elegante Methode gefunden stackoverflow.com/a/37774966/6456129